From dbde3020091de6593445fa2c86c1f20ccaf917ed Mon Sep 17 00:00:00 2001 From: Juerg Hutter Date: Wed, 4 Feb 2026 17:51:19 +0100 Subject: [PATCH] GAPW increase accuracy for XC integration (#4779) --- src/CMakeLists.txt | 1 + src/accint_weights_forces.F | 415 +++++++ src/atom_output.F | 3 - src/cp_control_types.F | 6 + src/cp_control_utils.F | 9 + src/ec_methods.F | 5 +- src/ec_orth_solver.F | 6 +- src/energy_corrections.F | 21 +- src/input_cp2k_qs.F | 15 + src/input_cp2k_xc.F | 22 +- src/qs_2nd_kernel_ao.F | 7 +- src/qs_dcdr_ao.F | 14 +- src/qs_environment.F | 23 +- src/qs_environment_methods.F | 21 +- src/qs_environment_types.F | 7 +- src/qs_fxc.F | 35 +- src/qs_kernel_methods.F | 15 +- src/qs_kpp1_env_methods.F | 16 +- src/qs_ks_methods.F | 20 +- src/qs_ks_types.F | 41 +- src/qs_ks_utils.F | 28 +- src/qs_linres_kernel.F | 14 +- src/qs_tddfpt2_fhxc.F | 8 + src/qs_tddfpt2_fhxc_forces.F | 42 +- src/qs_tddfpt2_forces.F | 12 +- src/qs_tddfpt2_operators.F | 60 +- src/qs_tddfpt2_subgroups.F | 14 + src/qs_update_s_mstruct.F | 22 +- src/qs_vxc.F | 95 +- src/qs_vxc_atom.F | 179 ++- src/response_solver.F | 82 +- src/xc/xc.F | 1064 ++++------------- src/xc/xc_atom.F | 13 +- src/xc/xc_input_constants.F | 4 - src/xc_pot_saop.F | 89 +- src/xc_write_output.F | 2 - tests/QS/regtest-acc-1/Ar-1.inp | 46 + tests/QS/regtest-acc-1/Ar-2.inp | 46 + tests/QS/regtest-acc-1/Ar-3.inp | 46 + tests/QS/regtest-acc-1/Ar-4.inp | 46 + tests/QS/regtest-acc-1/F2.inp | 61 + tests/QS/regtest-acc-1/HF-1.inp | 67 ++ tests/QS/regtest-acc-1/HF-2.inp | 67 ++ tests/QS/regtest-acc-1/HF-3.inp | 70 ++ tests/QS/regtest-acc-1/HF-4.inp | 61 + tests/QS/regtest-acc-1/HF-5.inp | 70 ++ tests/QS/regtest-acc-1/HF-d1.inp | 81 ++ tests/QS/regtest-acc-1/HF-d2.inp | 74 ++ tests/QS/regtest-acc-1/HF-d3.inp | 75 ++ tests/QS/regtest-acc-1/HF-d4.inp | 77 ++ tests/QS/regtest-acc-1/HF-d5.inp | 82 ++ tests/QS/regtest-acc-1/HF-d6.inp | 77 ++ tests/QS/regtest-acc-1/TEST_FILES.toml | 22 + tests/QS/regtest-acc-1/h2o.inp | 55 + tests/QS/regtest-acc-2/HF-admm-nlcc.inp | 77 ++ tests/QS/regtest-acc-2/HF-ec1.inp | 81 ++ tests/QS/regtest-acc-2/HF-ec2.inp | 81 ++ tests/QS/regtest-acc-2/HF-ec3.inp | 77 ++ tests/QS/regtest-acc-2/HF-ec4.inp | 87 ++ tests/QS/regtest-acc-2/HF-ec5.inp | 88 ++ tests/QS/regtest-acc-2/HF-ec6.inp | 77 ++ tests/QS/regtest-acc-2/HF-ec7.inp | 79 ++ tests/QS/regtest-acc-2/HF-nlcc.inp | 73 ++ tests/QS/regtest-acc-2/HF-uf1.inp | 92 ++ tests/QS/regtest-acc-2/TEST_FILES.toml | 20 + tests/QS/regtest-acc-2/h2o_p1.inp | 88 ++ tests/QS/regtest-acc-2/h2o_p2.inp | 90 ++ tests/QS/regtest-acc-2/h2o_p3.inp | 87 ++ tests/QS/regtest-acc-2/h2o_p4.inp | 89 ++ tests/QS/regtest-acc-2/h2o_p5.inp | 99 ++ tests/QS/regtest-acc-3/H2O_GAPW_1.inp | 92 ++ tests/QS/regtest-acc-3/H2O_GAPW_1_triplet.inp | 78 ++ tests/QS/regtest-acc-3/H2O_GAPW_2.inp | 85 ++ tests/QS/regtest-acc-3/H2O_GAPW_3.inp | 93 ++ tests/QS/regtest-acc-3/H2O_GAPW_4.inp | 80 ++ tests/QS/regtest-acc-3/H2O_GAPW_5.inp | 69 ++ tests/QS/regtest-acc-3/H2O_GAPW_6.inp | 72 ++ tests/QS/regtest-acc-3/H2O_GAPW_XC_1.inp | 82 ++ tests/QS/regtest-acc-3/H2O_GAPW_XC_2.inp | 73 ++ tests/QS/regtest-acc-3/H2O_GAPW_XC_3.inp | 79 ++ tests/QS/regtest-acc-3/H2O_GAPW_XC_4.inp | 81 ++ tests/QS/regtest-acc-3/Ne_GAPW_triplet.inp | 77 ++ tests/QS/regtest-acc-3/TEST_FILES.toml | 19 + tests/QS/regtest-acc-4/TEST_FILES.toml | 15 + tests/QS/regtest-acc-4/ch2o_dip45.inp | 104 ++ tests/QS/regtest-acc-4/ch2o_dip46.inp | 100 ++ tests/QS/regtest-acc-4/ch2o_dip47.inp | 103 ++ tests/QS/regtest-acc-4/ch2o_dip48.inp | 104 ++ tests/QS/regtest-acc-4/ch2o_xc_dip45.inp | 104 ++ tests/QS/regtest-acc-4/ch2o_xc_dip46.inp | 100 ++ tests/QS/regtest-acc-4/ch2o_xc_dip47.inp | 103 ++ tests/QS/regtest-acc-4/h2o_dip40.inp | 94 ++ tests/QS/regtest-acc-4/h2o_dip41.inp | 98 ++ tests/QS/regtest-acc-4/h2o_dip42.inp | 99 ++ tests/QS/regtest-acc-4/h2o_xc_dip40.inp | 94 ++ tests/QS/regtest-acc-4/h2o_xc_dip41.inp | 98 ++ tests/QS/regtest-acc-4/h2o_xc_dip42.inp | 99 ++ tests/QS/regtest-acc-5/TEST_FILES.toml | 31 + tests/QS/regtest-acc-5/bnt1.inp | 83 ++ tests/QS/regtest-acc-5/bnt2.inp | 84 ++ tests/QS/regtest-acc-5/bnt3.inp | 83 ++ tests/QS/regtest-acc-5/ft1.inp | 108 ++ tests/QS/regtest-acc-5/ft2.inp | 110 ++ tests/QS/regtest-acc-5/ft3.inp | 110 ++ tests/QS/regtest-acc-5/h2o_f01.inp | 89 ++ .../QS/regtest-acc-5/h2o_f01_coulomb_only.inp | 93 ++ tests/QS/regtest-acc-5/h2o_f01_pbe.inp | 99 ++ tests/QS/regtest-acc-5/h2o_f01_pbe_gapwxc.inp | 101 ++ .../QS/regtest-acc-5/h2o_f02_coulomb_only.inp | 105 ++ tests/QS/regtest-acc-5/h2o_t01.inp | 85 ++ tests/QS/regtest-acc-5/h2o_t02.inp | 85 ++ tests/QS/regtest-acc-5/h2o_t03.inp | 85 ++ tests/QS/regtest-acc-5/h2o_t04.inp | 85 ++ tests/QS/regtest-acc-5/h2o_t05.inp | 80 ++ tests/QS/regtest-acc-5/h2o_t06.inp | 89 ++ tests/QS/regtest-acc-5/h2o_t07.inp | 89 ++ tests/QS/regtest-acc-5/h2o_t08.inp | 80 ++ tests/QS/regtest-acc-5/h2o_t09.inp | 90 ++ tests/QS/regtest-acc-5/h2o_t10.inp | 81 ++ tests/QS/regtest-acc-5/h2o_t11.inp | 81 ++ tests/QS/regtest-acc-5/h2o_t12.inp | 81 ++ tests/QS/regtest-gpw-2-2/H2O-tpss.inp | 1 - tests/QS/regtest-gpw-2-2/H2O-tpss_new.inp | 1 - .../QS/regtest-libxc/H2O-hybrid-cam-lda0.inp | 1 - tests/QS/regtest-libxc/H2O-tpss_lsd.inp | 1 - tests/QS/regtest-libxc/H2O-tpssx_libxc.inp | 1 - tests/TEST_DIRS | 5 + 127 files changed, 8139 insertions(+), 1111 deletions(-) create mode 100644 src/accint_weights_forces.F create mode 100644 tests/QS/regtest-acc-1/Ar-1.inp create mode 100644 tests/QS/regtest-acc-1/Ar-2.inp create mode 100644 tests/QS/regtest-acc-1/Ar-3.inp create mode 100644 tests/QS/regtest-acc-1/Ar-4.inp create mode 100644 tests/QS/regtest-acc-1/F2.inp create mode 100644 tests/QS/regtest-acc-1/HF-1.inp create mode 100644 tests/QS/regtest-acc-1/HF-2.inp create mode 100644 tests/QS/regtest-acc-1/HF-3.inp create mode 100644 tests/QS/regtest-acc-1/HF-4.inp create mode 100644 tests/QS/regtest-acc-1/HF-5.inp create mode 100644 tests/QS/regtest-acc-1/HF-d1.inp create mode 100644 tests/QS/regtest-acc-1/HF-d2.inp create mode 100644 tests/QS/regtest-acc-1/HF-d3.inp create mode 100644 tests/QS/regtest-acc-1/HF-d4.inp create mode 100644 tests/QS/regtest-acc-1/HF-d5.inp create mode 100644 tests/QS/regtest-acc-1/HF-d6.inp create mode 100644 tests/QS/regtest-acc-1/TEST_FILES.toml create mode 100644 tests/QS/regtest-acc-1/h2o.inp create mode 100644 tests/QS/regtest-acc-2/HF-admm-nlcc.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec1.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec2.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec3.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec4.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec5.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec6.inp create mode 100644 tests/QS/regtest-acc-2/HF-ec7.inp create mode 100644 tests/QS/regtest-acc-2/HF-nlcc.inp create mode 100644 tests/QS/regtest-acc-2/HF-uf1.inp create mode 100644 tests/QS/regtest-acc-2/TEST_FILES.toml create mode 100644 tests/QS/regtest-acc-2/h2o_p1.inp create mode 100644 tests/QS/regtest-acc-2/h2o_p2.inp create mode 100644 tests/QS/regtest-acc-2/h2o_p3.inp create mode 100644 tests/QS/regtest-acc-2/h2o_p4.inp create mode 100644 tests/QS/regtest-acc-2/h2o_p5.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_1.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_1_triplet.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_2.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_3.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_4.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_5.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_6.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_XC_1.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_XC_2.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_XC_3.inp create mode 100644 tests/QS/regtest-acc-3/H2O_GAPW_XC_4.inp create mode 100644 tests/QS/regtest-acc-3/Ne_GAPW_triplet.inp create mode 100644 tests/QS/regtest-acc-3/TEST_FILES.toml create mode 100644 tests/QS/regtest-acc-4/TEST_FILES.toml create mode 100644 tests/QS/regtest-acc-4/ch2o_dip45.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_dip46.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_dip47.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_dip48.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_xc_dip45.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_xc_dip46.inp create mode 100644 tests/QS/regtest-acc-4/ch2o_xc_dip47.inp create mode 100644 tests/QS/regtest-acc-4/h2o_dip40.inp create mode 100644 tests/QS/regtest-acc-4/h2o_dip41.inp create mode 100644 tests/QS/regtest-acc-4/h2o_dip42.inp create mode 100644 tests/QS/regtest-acc-4/h2o_xc_dip40.inp create mode 100644 tests/QS/regtest-acc-4/h2o_xc_dip41.inp create mode 100644 tests/QS/regtest-acc-4/h2o_xc_dip42.inp create mode 100644 tests/QS/regtest-acc-5/TEST_FILES.toml create mode 100644 tests/QS/regtest-acc-5/bnt1.inp create mode 100644 tests/QS/regtest-acc-5/bnt2.inp create mode 100644 tests/QS/regtest-acc-5/bnt3.inp create mode 100644 tests/QS/regtest-acc-5/ft1.inp create mode 100644 tests/QS/regtest-acc-5/ft2.inp create mode 100644 tests/QS/regtest-acc-5/ft3.inp create mode 100644 tests/QS/regtest-acc-5/h2o_f01.inp create mode 100644 tests/QS/regtest-acc-5/h2o_f01_coulomb_only.inp create mode 100644 tests/QS/regtest-acc-5/h2o_f01_pbe.inp create mode 100644 tests/QS/regtest-acc-5/h2o_f01_pbe_gapwxc.inp create mode 100644 tests/QS/regtest-acc-5/h2o_f02_coulomb_only.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t01.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t02.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t03.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t04.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t05.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t06.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t07.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t08.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t09.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t10.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t11.inp create mode 100644 tests/QS/regtest-acc-5/h2o_t12.inp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4dbe3e72d7..b85dc7a9d3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,7 @@ configure_file(base/base_uses.f90 base/base_uses.f90 @ONLY) list( APPEND CP2K_SRCS_F + accint_weights_forces.F ace_nlist.F ace_wrapper.F admm_dm_methods.F diff --git a/src/accint_weights_forces.F b/src/accint_weights_forces.F new file mode 100644 index 0000000000..d3a906c7de --- /dev/null +++ b/src/accint_weights_forces.F @@ -0,0 +1,415 @@ +!--------------------------------------------------------------------------------------------------! +! CP2K: A general program to perform molecular dynamics simulations ! +! Copyright 2000-2026 CP2K developers group ! +! ! +! SPDX-License-Identifier: GPL-2.0-or-later ! +!--------------------------------------------------------------------------------------------------! + +! ************************************************************************************************** +!> \brief +!> \author JGH (01.2026) +! ************************************************************************************************** +MODULE accint_weights_forces + USE ao_util, ONLY: exp_radius_very_extended + USE atomic_kind_types, ONLY: atomic_kind_type,& + get_atomic_kind + USE cell_types, ONLY: cell_type,& + pbc + USE cp_control_types, ONLY: dft_control_type + USE grid_api, ONLY: integrate_pgf_product + USE input_constants, ONLY: sic_none,& + xc_none + USE input_section_types, ONLY: section_vals_type,& + section_vals_val_get + USE kinds, ONLY: dp + USE memory_utilities, ONLY: reallocate + USE particle_types, ONLY: particle_type + USE pw_env_types, ONLY: pw_env_get,& + pw_env_type + USE pw_grids, ONLY: pw_grid_compare + USE pw_methods, ONLY: pw_axpy,& + pw_multiply_with,& + pw_scale,& + pw_zero + USE pw_pool_types, ONLY: pw_pool_type + USE pw_types, ONLY: pw_c1d_gs_type,& + pw_r3d_rs_type + USE qs_environment_types, ONLY: get_qs_env,& + qs_environment_type + USE qs_force_types, ONLY: qs_force_type + USE qs_fxc, ONLY: qs_fxc_analytic + USE qs_ks_types, ONLY: get_ks_env,& + qs_ks_env_type + USE qs_rho_types, ONLY: qs_rho_get,& + qs_rho_type + USE realspace_grid_types, ONLY: realspace_grid_type,& + transfer_pw2rs + USE virial_types, ONLY: virial_type + USE xc, ONLY: xc_exc_pw_create,& + xc_vxc_pw_create +#include "./base/base_uses.f90" + + IMPLICIT NONE + + PRIVATE + + LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .FALSE. + + CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'accint_weights_forces' + + PUBLIC :: accint_weight_force + +CONTAINS + +! ************************************************************************************************** +!> \brief ... +!> \param qs_env ... +!> \param rho ... +!> \param rho1 ... +!> \param order ... +!> \param xc_section ... +!> \param triplet ... +! ************************************************************************************************** + SUBROUTINE accint_weight_force(qs_env, rho, rho1, order, xc_section, triplet) + TYPE(qs_environment_type), POINTER :: qs_env + TYPE(qs_rho_type), POINTER :: rho, rho1 + INTEGER, INTENT(IN) :: order + TYPE(section_vals_type), POINTER :: xc_section + LOGICAL, INTENT(IN), OPTIONAL :: triplet + + CHARACTER(len=*), PARAMETER :: routineN = 'accint_weight_force' + + INTEGER :: atom_a, handle, iatom, ikind, natom, & + natom_of_kind, nkind + INTEGER, DIMENSION(:), POINTER :: atom_list + LOGICAL :: lr_triplet, use_virial + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: calpha, cvalue + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: aforce + REAL(KIND=dp), DIMENSION(3, 3) :: avirial + TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set + TYPE(dft_control_type), POINTER :: dft_control + TYPE(pw_env_type), POINTER :: pw_env + TYPE(pw_pool_type), POINTER :: auxbas_pw_pool + TYPE(pw_r3d_rs_type) :: e_rspace + TYPE(qs_force_type), DIMENSION(:), POINTER :: force + TYPE(qs_ks_env_type), POINTER :: ks_env + TYPE(virial_type), POINTER :: virial + + CALL timeset(routineN, handle) + + CALL get_qs_env(qs_env, dft_control=dft_control) + + IF (dft_control%qs_control%gapw_control%accurate_xcint) THEN + + CALL get_qs_env(qs_env=qs_env, force=force, virial=virial) + use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer) + + CALL get_qs_env(qs_env, natom=natom, nkind=nkind) + ALLOCATE (aforce(3, natom)) + ALLOCATE (calpha(nkind), cvalue(nkind)) + cvalue = 1.0_dp + calpha(1:nkind) = dft_control%qs_control%gapw_control%aw(1:nkind) + + CALL get_qs_env(qs_env, ks_env=ks_env, pw_env=pw_env) + CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool) + CALL auxbas_pw_pool%create_pw(e_rspace) + + lr_triplet = .FALSE. + IF (PRESENT(triplet)) lr_triplet = triplet + + CALL xc_density(ks_env, rho, rho1, order, xc_section, lr_triplet, e_rspace) + CALL pw_scale(e_rspace, e_rspace%pw_grid%dvol) + + CALL gauss_grid_force(e_rspace, qs_env, calpha, cvalue, aforce, avirial) + + CALL auxbas_pw_pool%give_back_pw(e_rspace) + + CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set) + DO ikind = 1, nkind + CALL get_atomic_kind(atomic_kind_set(ikind), natom=natom_of_kind, atom_list=atom_list) + DO iatom = 1, natom_of_kind + atom_a = atom_list(iatom) + force(ikind)%rho_elec(1:3, iatom) = & + force(ikind)%rho_elec(1:3, iatom) + aforce(1:3, atom_a) + END DO + END DO + IF (use_virial) THEN + virial%pv_exc = virial%pv_exc + avirial + virial%pv_virial = virial%pv_virial + avirial + END IF + + DEALLOCATE (aforce) + + END IF + + CALL timestop(handle) + + END SUBROUTINE accint_weight_force + +! ************************************************************************************************** +!> \brief computes the forces/virial due to atomic centered Gaussian functions +!> \param e_rspace Energy density +!> \param qs_env ... +!> \param calpha ... +!> \param cvalue ... +!> \param aforce ... +!> \param avirial ... +! ************************************************************************************************** + SUBROUTINE gauss_grid_force(e_rspace, qs_env, calpha, cvalue, aforce, avirial) + TYPE(pw_r3d_rs_type), INTENT(IN) :: e_rspace + TYPE(qs_environment_type), POINTER :: qs_env + REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: calpha, cvalue + REAL(KIND=dp), DIMENSION(:, :), INTENT(OUT) :: aforce + REAL(KIND=dp), DIMENSION(3, 3), INTENT(OUT) :: avirial + + CHARACTER(len=*), PARAMETER :: routineN = 'gauss_grid_force' + + INTEGER :: atom_a, handle, iatom, ikind, j, & + natom_of_kind, npme + INTEGER, DIMENSION(:), POINTER :: atom_list, cores + LOGICAL :: use_virial + REAL(KIND=dp) :: alpha, eps_rho_rspace, radius + REAL(KIND=dp), DIMENSION(3) :: force_a, force_b, ra + REAL(KIND=dp), DIMENSION(3, 3) :: my_virial_a, my_virial_b + REAL(KIND=dp), DIMENSION(:, :), POINTER :: hab, pab + TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set + TYPE(cell_type), POINTER :: cell + TYPE(dft_control_type), POINTER :: dft_control + TYPE(particle_type), DIMENSION(:), POINTER :: particle_set + TYPE(pw_env_type), POINTER :: pw_env + TYPE(realspace_grid_type), POINTER :: rs_v + + CALL timeset(routineN, handle) + + ALLOCATE (cores(1)) + ALLOCATE (hab(1, 1)) + ALLOCATE (pab(1, 1)) + + CALL get_qs_env(qs_env, pw_env=pw_env) + CALL pw_env_get(pw_env, auxbas_rs_grid=rs_v) + + CALL transfer_pw2rs(rs_v, e_rspace) + + CALL get_qs_env(qs_env, & + atomic_kind_set=atomic_kind_set, & + cell=cell, & + dft_control=dft_control, & + particle_set=particle_set) + + use_virial = .TRUE. + avirial = 0.0_dp + aforce = 0.0_dp + + eps_rho_rspace = dft_control%qs_control%eps_rho_rspace + + DO ikind = 1, SIZE(atomic_kind_set) + + CALL get_atomic_kind(atomic_kind_set(ikind), natom=natom_of_kind, atom_list=atom_list) + + alpha = calpha(ikind) + pab(1, 1) = -cvalue(ikind) + IF (alpha == 0.0_dp .OR. pab(1, 1) == 0.0_dp) CYCLE + + CALL reallocate(cores, 1, natom_of_kind) + npme = 0 + cores = 0 + + DO iatom = 1, natom_of_kind + atom_a = atom_list(iatom) + ra(:) = pbc(particle_set(atom_a)%r, cell) + IF (rs_v%desc%parallel .AND. .NOT. rs_v%desc%distributed) THEN + ! replicated realspace grid, split the atoms up between procs + IF (MODULO(iatom, rs_v%desc%group_size) == rs_v%desc%my_pos) THEN + npme = npme + 1 + cores(npme) = iatom + END IF + ELSE + npme = npme + 1 + cores(npme) = iatom + END IF + END DO + + DO j = 1, npme + + iatom = cores(j) + atom_a = atom_list(iatom) + ra(:) = pbc(particle_set(atom_a)%r, cell) + hab(1, 1) = 0.0_dp + force_a(:) = 0.0_dp + force_b(:) = 0.0_dp + my_virial_a = 0.0_dp + my_virial_b = 0.0_dp + + radius = exp_radius_very_extended(la_min=0, la_max=0, lb_min=0, lb_max=0, & + ra=ra, rb=ra, rp=ra, & + zetp=alpha, eps=eps_rho_rspace, & + pab=pab, o1=0, o2=0, & + prefactor=1.0_dp, cutoff=1.0_dp) + + CALL integrate_pgf_product(0, alpha, 0, & + 0, 0.0_dp, 0, ra, [0.0_dp, 0.0_dp, 0.0_dp], & + rs_v, hab, pab=pab, o1=0, o2=0, & + radius=radius, & + calculate_forces=.TRUE., force_a=force_a, & + force_b=force_b, use_virial=use_virial, my_virial_a=my_virial_a, & + my_virial_b=my_virial_b, use_subpatch=.TRUE., subpatch_pattern=0) + + aforce(1:3, atom_a) = aforce(1:3, atom_a) + force_a(1:3) + avirial = avirial + my_virial_a + + END DO + + END DO + + DEALLOCATE (hab, pab, cores) + + CALL timestop(handle) + + END SUBROUTINE gauss_grid_force + +! ************************************************************************************************** +!> \brief calculates the XC density: +!> order=0: exc will contain the xc energy density E_xc(r) +!> order=1: exc will contain V_xc(r) * rho1(r) +!> order=2: exc will contain F_xc(r) * rho1(r) * rho1(r) +!> \param ks_env to get all the needed things +!> \param rho_struct density +!> \param rho1_struct response density +!> \param order requested derivative order +!> \param xc_section ... +!> \param triplet ... +!> \param exc ... +!> \author JGH +! ************************************************************************************************** + SUBROUTINE xc_density(ks_env, rho_struct, rho1_struct, order, xc_section, triplet, exc) + + TYPE(qs_ks_env_type), POINTER :: ks_env + TYPE(qs_rho_type), POINTER :: rho_struct, rho1_struct + INTEGER, INTENT(IN) :: order + TYPE(section_vals_type), POINTER :: xc_section + LOGICAL, INTENT(IN) :: triplet + TYPE(pw_r3d_rs_type) :: exc + + CHARACTER(len=*), PARAMETER :: routineN = 'xc_density' + + INTEGER :: handle, ispin, myfun, nspins + LOGICAL :: uf_grid + REAL(KIND=dp) :: excint, factor + REAL(KIND=dp), DIMENSION(3, 3) :: vdum + TYPE(cell_type), POINTER :: cell + TYPE(dft_control_type), POINTER :: dft_control + TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g + TYPE(pw_c1d_gs_type), POINTER :: rho_nlcc_g + TYPE(pw_env_type), POINTER :: pw_env + TYPE(pw_pool_type), POINTER :: auxbas_pw_pool, xc_pw_pool + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, rho_r, tau1_r, tau_r, vxc_rho, & + vxc_tau + TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, weights + + CALL timeset(routineN, handle) + + ! we always get true exc (not integration weighted) + NULLIFY (weights) + + CALL get_ks_env(ks_env, & + dft_control=dft_control, & + pw_env=pw_env, & + cell=cell, & + rho_nlcc=rho_nlcc, & + rho_nlcc_g=rho_nlcc_g) + + CALL qs_rho_get(rho_struct, rho_r=rho_r, rho_g=rho_g, tau_r=tau_r) + + nspins = dft_control%nspins + + CALL section_vals_val_get(xc_section, "XC_FUNCTIONAL%_SECTION_PARAMETERS_", i_val=myfun) + + CALL pw_env_get(pw_env, xc_pw_pool=xc_pw_pool, auxbas_pw_pool=auxbas_pw_pool) + uf_grid = .NOT. pw_grid_compare(auxbas_pw_pool%pw_grid, xc_pw_pool%pw_grid) + IF (uf_grid) THEN + CALL cp_warn(__LOCATION__, "Fine grid option not possible with energy density") + CPABORT("Fine Grid in xc_density") + END IF + + CALL pw_zero(exc) + + IF (myfun /= xc_none) THEN + + CPASSERT(ASSOCIATED(rho_struct)) + CPASSERT(dft_control%sic_method_id == sic_none) + + ! add the nlcc densities + IF (ASSOCIATED(rho_nlcc) .AND. order <= 1) THEN + factor = 1.0_dp + DO ispin = 1, nspins + CALL pw_axpy(rho_nlcc, rho_r(ispin), factor) + CALL pw_axpy(rho_nlcc_g, rho_g(ispin), factor) + END DO + END IF + + NULLIFY (vxc_rho, vxc_tau) + SELECT CASE (order) + CASE (0) + ! we could reduce to energy only here + CALL xc_exc_pw_create(rho_r, rho_g, tau_r, xc_section, weights, xc_pw_pool, exc) + CASE (1) + CALL qs_rho_get(rho1_struct, rho_r=rho1_r, tau_r=tau1_r) + CALL xc_vxc_pw_create(vxc_rho=vxc_rho, vxc_tau=vxc_tau, rho_r=rho_r, & + rho_g=rho_g, tau=tau_r, exc=excint, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., & + virial_xc=vdum) + CASE (2) + CALL qs_rho_get(rho1_struct, rho_r=rho1_r, tau_r=tau1_r) + CALL qs_fxc_analytic(rho_struct, rho1_r, tau1_r, xc_section, weights, xc_pw_pool, & + triplet, vxc_rho, vxc_tau) + CASE DEFAULT + CPABORT("Derivative order not available in xc_density") + END SELECT + + ! remove the nlcc densities (keep stuff in original state) + IF (ASSOCIATED(rho_nlcc) .AND. order <= 1) THEN + factor = -1.0_dp + DO ispin = 1, dft_control%nspins + CALL pw_axpy(rho_nlcc, rho_r(ispin), factor) + CALL pw_axpy(rho_nlcc_g, rho_g(ispin), factor) + END DO + END IF + ! + SELECT CASE (order) + CASE (0) + ! + CASE (1, 2) + CALL pw_zero(exc) + IF (ASSOCIATED(vxc_rho)) THEN + DO ispin = 1, nspins + CALL pw_multiply_with(vxc_rho(ispin), rho1_r(ispin)) + CALL pw_axpy(vxc_rho(ispin), exc, 1.0_dp) + CALL vxc_rho(ispin)%release() + END DO + DEALLOCATE (vxc_rho) + END IF + IF (ASSOCIATED(vxc_tau)) THEN + DO ispin = 1, nspins + CALL pw_multiply_with(vxc_tau(ispin), tau1_r(ispin)) + CALL pw_axpy(vxc_tau(ispin), exc, 1.0_dp) + CALL vxc_tau(ispin)%release() + END DO + DEALLOCATE (vxc_tau) + END IF + CASE DEFAULT + CPABORT("Derivative order not available in xc_density") + END SELECT + + IF (order == 2) THEN + CALL pw_scale(exc, 0.5_dp) + END IF + + END IF + + CALL timestop(handle) + + END SUBROUTINE xc_density + +END MODULE accint_weights_forces diff --git a/src/atom_output.F b/src/atom_output.F index 32414a31f0..c2060add06 100644 --- a/src/atom_output.F +++ b/src/atom_output.F @@ -510,7 +510,6 @@ CONTAINS INTEGER, INTENT(IN) :: iw CHARACTER(len=160) :: shortform - CHARACTER(LEN=20) :: tmpStr CHARACTER(len=:), ALLOCATABLE :: reference INTEGER :: ifun, il, meth, myfun, reltyp LOGICAL :: lsd @@ -600,8 +599,6 @@ CONTAINS lsd = (meth == do_uks_atom) IF (myfun /= xc_none) THEN - CALL section_vals_val_get(xc_section, "FUNCTIONAL_ROUTINE", c_val=tmpStr) - IF (iw > 0) WRITE (iw, fmt="(' FUNCTIONAL| ROUTINE=',a)") TRIM(tmpStr) CALL xc_functionals_expand(xc_fun_section, xc_section) IF (iw > 0) THEN ifun = 0 diff --git a/src/cp_control_types.F b/src/cp_control_types.F index 082ccc255e..bf1090fc6d 100644 --- a/src/cp_control_types.F +++ b/src/cp_control_types.F @@ -273,6 +273,9 @@ MODULE cp_control_types lmax_rho0 = 0, & lmax_sphere = 0, & quadrature = 0 + LOGICAL :: accurate_xcint = .FALSE. + REAL(KIND=dp) :: aweights = 0.0_dp + REAL(KIND=dp), DIMENSION(:), POINTER :: aw => NULL() LOGICAL :: alpha0_hard_from_input = .FALSE., & force_paw = .FALSE., & non_paw_atoms = .FALSE., & @@ -964,6 +967,9 @@ CONTAINS DEALLOCATE (qs_control%e_cutoff) END IF IF (ASSOCIATED(qs_control%gapw_control)) THEN + IF (ASSOCIATED(qs_control%gapw_control%aw)) THEN + DEALLOCATE (qs_control%gapw_control%aw) + END IF DEALLOCATE (qs_control%gapw_control) END IF IF (ASSOCIATED(qs_control%ddapc_restraint_control)) THEN diff --git a/src/cp_control_utils.F b/src/cp_control_utils.F index b5f90d9ec9..f2db225bed 100644 --- a/src/cp_control_utils.F +++ b/src/cp_control_utils.F @@ -986,6 +986,9 @@ CONTAINS IF (qs_control%gapw_control%basis_1c /= gapw_1c_orb) THEN qs_control%gapw_control%eps_svd = MAX(qs_control%gapw_control%eps_svd, 1.E-12_dp) END IF + ! GAPW accurate integration + CALL section_vals_val_get(qs_section, "GAPW_ACCURATE_XCINT", l_val=qs_control%gapw_control%accurate_xcint) + CALL section_vals_val_get(qs_section, "ALPHA_WEIGHTS", r_val=qs_control%gapw_control%aweights) ! Integers grids CALL section_vals_val_get(qs_section, "PW_GRID", i_val=itmp) @@ -2447,6 +2450,12 @@ CONTAINS "QS| eps_ppnl:", & qs_control%eps_ppnl IF (qs_control%gapw) THEN + IF (qs_control%gapw_control%accurate_xcint) THEN + WRITE (UNIT=output_unit, FMT="(T2,A,T69,F12.6)") & + "QS| GAPW| XC integration using accurate scheme: Ref. exponent =", & + qs_control%gapw_control%aweights + END IF + ! SELECT CASE (qs_control%gapw_control%basis_1c) CASE (gapw_1c_orb) WRITE (UNIT=output_unit, FMT="(T2,A)") & diff --git a/src/ec_methods.F b/src/ec_methods.F index 39d95750da..2d0f7b8ce5 100644 --- a/src/ec_methods.F +++ b/src/ec_methods.F @@ -106,6 +106,7 @@ CONTAINS TYPE(pw_env_type), POINTER :: pw_env TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau_r + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(xc_derivative_set_type) :: deriv_set TYPE(xc_rho_set_type) :: rho_set @@ -113,7 +114,7 @@ CONTAINS NULLIFY (auxbas_pw_pool, pw_env, rho_r, vxc, vxc_tau) - CALL get_qs_env(qs_env, pw_env=pw_env) + CALL get_qs_env(qs_env, pw_env=pw_env, xcint_weights=weights) CALL pw_env_get(pw_env=pw_env, auxbas_pw_pool=auxbas_pw_pool) ! Get density CALL qs_rho_get(rho, rho_r=rho_r, tau_r=tau_r) @@ -123,6 +124,7 @@ CONTAINS rho_r=rho_r, & ! place where derivative is evaluated tau_r=tau_r, & pw_pool=auxbas_pw_pool, & ! pool for grids + weights=weights, & xc_section=xc_section) ! folding of second deriv with density in rho1_set @@ -134,6 +136,7 @@ CONTAINS rho1_g=rho1_g, & ! density with which to fold tau1_r=tau1_r, & pw_pool=auxbas_pw_pool, & ! pool for grids + weights=weights, & xc_section=xc_section, & gapw=.FALSE., & compute_virial=compute_virial, & diff --git a/src/ec_orth_solver.F b/src/ec_orth_solver.F index 4d4444ba47..1a8a904a72 100644 --- a/src/ec_orth_solver.F +++ b/src/ec_orth_solver.F @@ -1153,6 +1153,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type) :: v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, rho_r, tau1_r, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_kpp1_env_type), POINTER :: kpp1_env TYPE(qs_rho_type), POINTER :: rho, rho_aux TYPE(section_vals_type), POINTER :: input, xc_section, xc_section_aux @@ -1183,6 +1184,9 @@ CONTAINS CALL get_qs_env(qs_env, pw_env=pw_env) CPASSERT(ASSOCIATED(pw_env)) + NULLIFY (weights) + CALL get_qs_env(qs_env, xcint_weights=weights) + NULLIFY (auxbas_pw_pool, poisson_env, pw_pools) ! gets the tmp grids CALL pw_env_get(pw_env=pw_env, & @@ -1230,7 +1234,7 @@ CONTAINS CALL qs_rho_get(rho_aux, rho_r=rho_r) ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm) CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, & - rho_r, auxbas_pw_pool, & + rho_r, auxbas_pw_pool, weights, & xc_section=xc_section_aux) END IF END IF diff --git a/src/energy_corrections.F b/src/energy_corrections.F index a8431f9c55..fa05dbc661 100644 --- a/src/energy_corrections.F +++ b/src/energy_corrections.F @@ -16,6 +16,7 @@ !> \author JGH ! ************************************************************************************************** MODULE energy_corrections + USE accint_weights_forces, ONLY: accint_weight_force USE admm_dm_methods, ONLY: admm_dm_calc_rho_aux USE admm_methods, ONLY: admm_mo_calc_rho_aux USE admm_types, ONLY: admm_type @@ -875,7 +876,7 @@ CONTAINS TYPE(qs_force_type), DIMENSION(:), POINTER :: force TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(qs_ks_env_type), POINTER :: ks_env - TYPE(qs_rho_type), POINTER :: rho, rho_struct, rho_xc + TYPE(qs_rho_type), POINTER :: rho, rho1, rho_struct, rho_xc TYPE(section_vals_type), POINTER :: ec_hfx_sections TYPE(task_list_type), POINTER :: task_list TYPE(virial_type), POINTER :: virial @@ -1035,6 +1036,24 @@ CONTAINS CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=ec_env%xc_section, & vxc_rho=v_rspace, vxc_tau=v_tau_rspace, exc=exc, just_energy=.FALSE.) + IF (debug_forces) fodeb(1:3) = force(1)%rho_elec(1:3, 1) + IF (debug_stress .AND. use_virial) stdeb = virial%pv_virial + ! + NULLIFY (rho1) + CALL accint_weight_force(qs_env, rho_struct, rho1, 0, ec_env%xc_section) + ! + IF (debug_forces) THEN + fodeb(1:3) = force(1)%rho_elec(1:3, 1) - fodeb(1:3) + CALL para_env%sum(fodeb) + IF (iounit > 0) WRITE (iounit, "(T3,A,T33,3F16.8)") "DEBUG:: Fxc*dw ", fodeb + END IF + IF (debug_stress .AND. use_virial) THEN + stdeb = fconv*(virial%pv_virial - stdeb) + CALL para_env%sum(stdeb) + IF (iounit > 0) WRITE (UNIT=iounit, FMT="(T2,A,T41,2(1X,ES19.11))") & + 'STRESS| INT Fxc*dw ', one_third_sum_diag(stdeb), det_3x3(stdeb) + END IF + IF (.NOT. ASSOCIATED(v_rspace)) THEN ALLOCATE (v_rspace(nspins)) DO ispin = 1, nspins diff --git a/src/input_cp2k_qs.F b/src/input_cp2k_qs.F index 7b1d6afc8c..5e9c6f2acc 100644 --- a/src/input_cp2k_qs.F +++ b/src/input_cp2k_qs.F @@ -237,6 +237,21 @@ CONTAINS CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) + CALL keyword_create( & + keyword, __LOCATION__, name="GAPW_ACCURATE_XCINT", & + description="Use a more accurate integration scheme for the soft XC energy in GAPW.", & + usage="GAPW_ACCURATE_XCINT", & + default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) + CALL section_add_keyword(section, keyword) + CALL keyword_release(keyword) + + CALL keyword_create( & + keyword, __LOCATION__, name="ALPHA_WEIGHTS", & + description="Gaussian exponent reference (rc=1.2 Bohr) for accurate integration in GAPW.", & + usage="ALPHA_WEIGHTS 10.0", default_r_val=6.0_dp) + CALL section_add_keyword(section, keyword) + CALL keyword_release(keyword) + CALL keyword_create(keyword, __LOCATION__, name="MIN_PAIR_LIST_RADIUS", & description="Set the minimum value [Bohr] for the overlap pair list radius."// & " Default is 0.0 Bohr, negative values are changed to the cell size."// & diff --git a/src/input_cp2k_xc.F b/src/input_cp2k_xc.F index a2d9bab2f0..ce1e767edc 100644 --- a/src/input_cp2k_xc.F +++ b/src/input_cp2k_xc.F @@ -46,11 +46,10 @@ MODULE input_cp2k_xc USE xc_input_constants, ONLY: & c_pw92, c_pw92dmc, c_pw92vmc, c_pz, c_pzdmc, c_pzvmc, do_vwn3, do_vwn5, ke_lc, ke_llp, & ke_ol1, ke_ol2, ke_pbe, ke_pw86, ke_pw91, ke_t92, pz_orig, xalpha, xc_b97_3c, & - xc_b97_grimme, xc_b97_mardirossian, xc_b97_orig, xc_debug_new_routine, & - xc_default_f_routine, xc_deriv_collocate, xc_deriv_nn10_smooth, xc_deriv_nn50_smooth, & - xc_deriv_pw, xc_deriv_spline2, xc_deriv_spline2_smooth, xc_deriv_spline3, & - xc_deriv_spline3_smooth, xc_pbe_orig, xc_pbe_rev, xc_pbe_sol, xc_rho_nn10, xc_rho_nn50, & - xc_rho_no_smooth, xc_rho_spline2_smooth, xc_rho_spline3_smooth, xc_test_lsd_f_routine, & + xc_b97_grimme, xc_b97_mardirossian, xc_b97_orig, xc_deriv_collocate, xc_deriv_nn10_smooth, & + xc_deriv_nn50_smooth, xc_deriv_pw, xc_deriv_spline2, xc_deriv_spline2_smooth, & + xc_deriv_spline3, xc_deriv_spline3_smooth, xc_pbe_orig, xc_pbe_rev, xc_pbe_sol, & + xc_rho_nn10, xc_rho_nn50, xc_rho_no_smooth, xc_rho_spline2_smooth, xc_rho_spline3_smooth, & xgga_b88x, xgga_ev93, xgga_opt, xgga_pbex, xgga_pw86, xgga_pw91, xgga_revpbe USE xc_libxc, ONLY: libxc_add_sections #include "./base/base_uses.f90" @@ -1319,19 +1318,6 @@ CONTAINS CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) - CALL keyword_create( & - keyword, __LOCATION__, name="FUNCTIONAL_ROUTINE", & - description="Select the code for xc calculation", & - usage="FUNCTIONAL_ROUTINE (DEFAULT|TEST_LSD|DEBUG)", & - default_i_val=xc_default_f_routine, & - enum_c_vals=s2a("DEFAULT", "TEST_LSD", "DEBUG"), & - enum_i_vals=[xc_default_f_routine, xc_test_lsd_f_routine, xc_debug_new_routine], & - enum_desc=s2a("Carry out exchange-correlation functional calculation", & - "Use test local-spin-density approximation code for exchange-correlation functional calculation", & - "Use debug new code for exchange-correlation functional calculation")) - CALL section_add_keyword(section, keyword) - CALL keyword_release(keyword) - CALL section_create(subsection, __LOCATION__, name="xc_grid", & !FM to do description="The xc parameters used when calculating the xc on the grid", & n_keywords=5, n_subsections=0, repeats=.FALSE.) diff --git a/src/qs_2nd_kernel_ao.F b/src/qs_2nd_kernel_ao.F index 8e583ccfe5..882a42af8d 100644 --- a/src/qs_2nd_kernel_ao.F +++ b/src/qs_2nd_kernel_ao.F @@ -285,6 +285,7 @@ CONTAINS TYPE(pw_env_type), POINTER :: pw_env TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_aux_r, tau1_aux_r, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho_aux TYPE(section_vals_type), POINTER :: xc_section @@ -315,7 +316,7 @@ CONTAINS NULLIFY (v_xc) ! calculate the xc potential lsd = (nspins == 2) - CALL get_qs_env(qs_env=qs_env, ks_env=ks_env, admm_env=admm_env) + CALL get_qs_env(qs_env=qs_env, ks_env=ks_env, admm_env=admm_env, xcint_weights=weights) CALL get_admm_env(admm_env, task_list_aux_fit=task_list_aux_fit) CALL qs_rho_get(p_env%rho1_admm, rho_r=rho1_aux_r, rho_g=rho1_aux_g, tau_r=tau1_aux_r) @@ -323,7 +324,9 @@ CONTAINS CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set_admm, & p_env%kpp1_env%rho_set_admm, & - rho1_aux_r, rho1_aux_g, tau1_aux_r, auxbas_pw_pool, xc_section=xc_section, gapw=.FALSE., & + rho1_aux_r, rho1_aux_g, tau1_aux_r, auxbas_pw_pool, & + weights=weights, & + xc_section=xc_section, gapw=.FALSE., & compute_virial=calc_virial, virial_xc=virial) NULLIFY (work_hmat%matrix) diff --git a/src/qs_dcdr_ao.F b/src/qs_dcdr_ao.F index 1104383969..8592b6542f 100644 --- a/src/qs_dcdr_ao.F +++ b/src/qs_dcdr_ao.F @@ -126,6 +126,7 @@ CONTAINS TYPE(pw_r3d_rs_type) :: v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, rho_r, tau1_r, v_rspace_new, & v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_rho_type), POINTER :: perturbed_density, rho TYPE(section_vals_type), POINTER :: input, xc_section TYPE(xc_derivative_set_type) :: deriv_set @@ -215,6 +216,7 @@ CONTAINS CALL get_qs_env(qs_env=qs_env, & pw_env=pw_env, & + xcint_weights=weights, & input=input) ! Create the temporary grids @@ -225,7 +227,7 @@ CONTAINS xc_section => section_vals_get_subs_vals(input, "DFT%XC") CALL xc_prep_2nd_deriv(deriv_set, rho_set, & - rho_r, auxbas_pw_pool, & + rho_r, auxbas_pw_pool, weights, & xc_section=xc_section) ! Done with deriv_set and rho_set @@ -252,7 +254,8 @@ CONTAINS ! Calculate the second derivative of the exchange-correlation potential CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, & - rho1_r, rho1_g_pw, tau1_r, auxbas_pw_pool, xc_section, gapw=.FALSE.) + rho1_r, rho1_g_pw, tau1_r, auxbas_pw_pool, & + weights, xc_section, gapw=.FALSE.) DO ispin = 1, dcdr_env%nspins v_rspace_new(ispin) = v_xc(ispin) @@ -444,6 +447,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type) :: drho_r_total, v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: drho_r, dtau_r, rho_r, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_rho_type), POINTER :: rho TYPE(section_vals_type), POINTER :: input, xc_section TYPE(xc_derivative_set_type) :: my_deriv_set @@ -454,6 +458,7 @@ CONTAINS CALL get_qs_env(qs_env=qs_env, & pw_env=pw_env, & input=input, & + xcint_weights=weights, & rho=rho) CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r) @@ -502,12 +507,13 @@ CONTAINS ! Get the XC potential corresponding to the perturbed density CALL xc_prep_2nd_deriv(my_deriv_set, my_rho_set, & - rho_r, auxbas_pw_pool, & + rho_r, auxbas_pw_pool, weights, & xc_section=xc_section) NULLIFY (dtau_r) CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, my_deriv_set, my_rho_set, & - drho_r, drho_g, dtau_r, auxbas_pw_pool, xc_section, gapw=.FALSE.) + drho_r, drho_g, dtau_r, auxbas_pw_pool, & + weights, xc_section, gapw=.FALSE.) IF (ASSOCIATED(v_xc_tau)) CPABORT("Meta functionals are not supported!") CALL xc_dset_release(my_deriv_set) diff --git a/src/qs_environment.F b/src/qs_environment.F index 5a3b78eef6..9c20719ba3 100644 --- a/src/qs_environment.F +++ b/src/qs_environment.F @@ -605,10 +605,10 @@ CONTAINS INTEGER, DIMENSION(5) :: occ LOGICAL :: all_potential_present, be_silent, cneo_potential_present, do_kpoints, do_ri_hfx, & do_ri_mp2, do_ri_rpa, do_ri_sos_mp2, do_rpa_ri_exx, do_wfc_im_time, e1terms, & - has_unit_metric, lribas, mp2_present, orb_gradient + has_unit_metric, lribas, mp2_present, orb_gradient, paw_atom REAL(KIND=dp) :: alpha, ccore, ewald_rcut, fxx, maxocc, & - rcut, total_zeff_corr, verlet_skin, & - zeff_correction + rc, rcut, total_zeff_corr, & + verlet_skin, zeff_correction TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set TYPE(cp_logger_type), POINTER :: logger TYPE(dft_control_type), POINTER :: dft_control @@ -1145,6 +1145,7 @@ CONTAINS IF (dft_control%qs_control%method_id == do_method_xtb) THEN IF (.NOT. dft_control%qs_control%xtb_control%do_tblite) THEN ! cutoff radius + CALL get_qs_env(qs_env, nkind=nkind) DO ikind = 1, nkind qs_kind => qs_kind_set(ikind) IF (qs_kind%xtb_parameter%defined) THEN @@ -1293,6 +1294,22 @@ CONTAINS END IF ! NLCC CALL init_gapw_nlcc(qs_kind_set) + ! Accurate XC integration + IF (gapw_control%accurate_xcint) THEN + CPASSERT(.NOT. ASSOCIATED(gapw_control%aw)) + CALL get_qs_env(qs_env, nkind=nkind) + ALLOCATE (gapw_control%aw(nkind)) + alpha = gapw_control%aweights + DO ikind = 1, nkind + qs_kind => qs_kind_set(ikind) + CALL get_qs_kind(qs_kind, hard_radius=rc, paw_atom=paw_atom) + IF (paw_atom) THEN + gapw_control%aw(ikind) = alpha*(1.2_dp/rc)**2 + ELSE + gapw_control%aw(ikind) = 0.0_dp + END IF + END DO + END IF ELSE IF (dft_control%qs_control%method_id == do_method_lrigpw) THEN ! allocate local ri environment ! nothing to do here? diff --git a/src/qs_environment_methods.F b/src/qs_environment_methods.F index 5cbf909fae..918af5f6a5 100644 --- a/src/qs_environment_methods.F +++ b/src/qs_environment_methods.F @@ -205,7 +205,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), POINTER :: embed_pot, external_vxc, rho_nlcc, & spin_embed_pot, v_hartree_rspace, vee, & - vppl + vppl, xcint_weights TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(rho0_mpole_type), POINTER :: rho0_mpole @@ -215,7 +215,7 @@ CONTAINS NULLIFY (dft_control, cell, ks_env, v_hartree_rspace, auxbas_pw_pool) NULLIFY (rho0_mpole) NULLIFY (ewald_env, ewald_pw, new_pw_env, external_vxc, rho_core, rho_nlcc, rho_nlcc_g, vee, vppl, & - embed_pot, spin_embed_pot) + embed_pot, spin_embed_pot, xcint_weights) CALL get_qs_env(qs_env, ks_env=ks_env, pw_env=new_pw_env) IF (.NOT. ASSOCIATED(new_pw_env)) THEN @@ -320,6 +320,23 @@ CONTAINS CALL set_ks_env(ks_env, rho_nlcc_g=rho_nlcc_g) END IF + ! reallocate xcint_weights + IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc) THEN + IF (dft_control%qs_control%gapw_control%accurate_xcint) THEN + CALL set_ks_env(ks_env, exc_accint=.TRUE.) + NULLIFY (xcint_weights) + CALL get_qs_env(qs_env, pw_env=new_pw_env, xcint_weights=xcint_weights) + IF (ASSOCIATED(xcint_weights)) THEN + CALL xcint_weights%release() + ELSE + ALLOCATE (xcint_weights) + END IF + CALL pw_env_get(new_pw_env, auxbas_pw_pool=auxbas_pw_pool) + CALL auxbas_pw_pool%create_pw(xcint_weights) + CALL set_ks_env(ks_env, xcint_weights=xcint_weights) + END IF + END IF + ! reallocate vee: external electrostatic potential IF (dft_control%apply_external_potential .AND. .NOT. qs_env%mimic) THEN NULLIFY (vee) diff --git a/src/qs_environment_types.F b/src/qs_environment_types.F index ffc37677e6..8d62148d9f 100644 --- a/src/qs_environment_types.F +++ b/src/qs_environment_types.F @@ -401,6 +401,7 @@ CONTAINS !> \param kinetic ... !> \param qs_charges ... !> \param vppl ... +!> \param xcint_weights ... !> \param rho_core ... !> \param rho_nlcc ... !> \param rho_nlcc_g ... @@ -508,7 +509,8 @@ CONTAINS matrix_p_mp2, matrix_p_mp2_admm, rho, & rho_xc, pw_env, ewald_env, ewald_pw, active_space, & mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, & - vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, & + vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, & + ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, & local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, & molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, & task_list, task_list_soft, & @@ -572,7 +574,7 @@ CONTAINS TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, & POINTER :: kinetic TYPE(qs_charges_type), OPTIONAL, POINTER :: qs_charges - TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl + TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl, xcint_weights TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_core TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rho_nlcc TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_nlcc_g @@ -816,6 +818,7 @@ CONTAINS matrix_s_RI_aux_kp=matrix_s_RI_aux_kp, & rho=rho, & rho_xc=rho_xc, & + xcint_weights=xcint_weights, & rho_core=rho_core, & rho_nlcc=rho_nlcc, & rho_nlcc_g=rho_nlcc_g, & diff --git a/src/qs_fxc.F b/src/qs_fxc.F index 59efe418c8..6fe283637e 100644 --- a/src/qs_fxc.F +++ b/src/qs_fxc.F @@ -84,17 +84,20 @@ CONTAINS !> \param rho1_r ... !> \param tau1_r ... !> \param xc_section ... +!> \param weights ... !> \param auxbas_pw_pool ... !> \param is_triplet ... !> \param v_xc ... !> \param v_xc_tau ... !> \param spinflip ... ! ************************************************************************************************** - SUBROUTINE qs_fxc_analytic(rho0, rho1_r, tau1_r, xc_section, auxbas_pw_pool, is_triplet, v_xc, v_xc_tau, spinflip) + SUBROUTINE qs_fxc_analytic(rho0, rho1_r, tau1_r, xc_section, weights, auxbas_pw_pool, & + is_triplet, v_xc, v_xc_tau, spinflip) TYPE(qs_rho_type), POINTER :: rho0 TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, tau1_r TYPE(section_vals_type), POINTER :: xc_section + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_pool_type), POINTER :: auxbas_pw_pool LOGICAL, INTENT(IN) :: is_triplet TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: v_xc, v_xc_tau @@ -133,11 +136,12 @@ CONTAINS xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL") needs = xc_functionals_get_needs(xc_fun_section, lsd, .TRUE.) ! calculate the arguments needed by the functionals and the values of the functional on the grid - CALL xc_prep_2nd_deriv(deriv_set, rho0_set, rho0_r, auxbas_pw_pool, xc_section=xc_section, tau_r=tau0_r) + CALL xc_prep_2nd_deriv(deriv_set, rho0_set, rho0_r, auxbas_pw_pool, weights, & + xc_section=xc_section, tau_r=tau0_r) ! Folds the density rho1 with the functional CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho0_set, rho1_r, rho1_g, tau1_r, & - auxbas_pw_pool, xc_section=xc_section, gapw=.FALSE., do_triplet=is_triplet, & - do_sf=do_sf) + auxbas_pw_pool, weights, xc_section=xc_section, & + gapw=.FALSE., do_triplet=is_triplet, do_sf=do_sf) CALL xc_dset_release(deriv_set) CALL xc_rho_set_release(rho0_set) @@ -156,8 +160,8 @@ CONTAINS !> \param fxc_rho ... !> \param fxc_tau ... ! ************************************************************************************************** - SUBROUTINE qs_fxc_fdiff(ks_env, rho0_struct, rho1_struct, xc_section, accuracy, is_triplet, & - fxc_rho, fxc_tau) + SUBROUTINE qs_fxc_fdiff(ks_env, rho0_struct, rho1_struct, xc_section, accuracy, & + is_triplet, fxc_rho, fxc_tau) TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho0_struct, rho1_struct @@ -288,6 +292,7 @@ CONTAINS !> \param rho0_struct Ground state density, n(r). !> \param rho1_struct Density used to fold the functional derivatives, n^(1)(r). !> \param xc_section ... +!> \param weights ... !> \param pw_pool ... !> \param fxc_rho Second functional derivative with respect to the density, n(r). !> \param fxc_tau mGGA contribution to the second functional derivative with respect to the density. @@ -297,11 +302,12 @@ CONTAINS !> \par History !> * 07.2024 Created [LHS] ! ************************************************************************************************** - SUBROUTINE qs_fgxc_analytic(rho0_struct, rho1_struct, xc_section, pw_pool, & + SUBROUTINE qs_fgxc_analytic(rho0_struct, rho1_struct, xc_section, weights, pw_pool, & fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip) TYPE(qs_rho_type), POINTER :: rho0_struct, rho1_struct TYPE(section_vals_type), POINTER :: xc_section + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_pool_type), POINTER :: pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: fxc_rho, fxc_tau, gxc_rho, gxc_tau LOGICAL, INTENT(IN), OPTIONAL :: spinflip @@ -387,8 +393,8 @@ CONTAINS ! pw_pool given by the calling subroutine ! xc_section given by the calling subroutine ! tau0_r pw_type calculated by qs_rho_get - CALL xc_prep_3rd_deriv(deriv_set, rho0_set, rho0_r, pw_pool, xc_section, tau_r=tau0_r, & - do_sf=do_sf) + CALL xc_prep_3rd_deriv(deriv_set, rho0_set, rho0_r, pw_pool, weights, & + xc_section, tau_r=tau0_r, do_sf=do_sf) ! Build rho1_set ! Get the values on the gridpoints of the rho1 density @@ -444,6 +450,7 @@ CONTAINS !> \param accuracy ... !> \param epsrho ... !> \param is_triplet ... +!> \param weights ... !> \param fxc_rho ... !> \param fxc_tau ... !> \param gxc_rho ... @@ -451,7 +458,7 @@ CONTAINS !> \param spinflip ... ! ************************************************************************************************** SUBROUTINE qs_fgxc_gdiff(ks_env, rho0_struct, rho1_struct, xc_section, accuracy, epsrho, & - is_triplet, fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip) + is_triplet, weights, fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip) TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho0_struct, rho1_struct @@ -459,6 +466,7 @@ CONTAINS INTEGER, INTENT(IN) :: accuracy REAL(KIND=dp), INTENT(IN) :: epsrho LOGICAL, INTENT(IN) :: is_triplet + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: fxc_rho, fxc_tau, gxc_rho, gxc_tau LOGICAL, OPTIONAL :: spinflip @@ -510,7 +518,8 @@ CONTAINS IF (do_sf) THEN CALL qs_rho_get(rho1_struct, rho_r=rho1_r, tau_r=tau1_r) CALL qs_fxc_analytic(rho0_struct, rho1_r, tau1_r, xc_section, & - auxbas_pw_pool, is_triplet, fxc_rho, fxc_tau, spinflip=do_sf) + weights, auxbas_pw_pool, is_triplet, & + fxc_rho, fxc_tau, spinflip=do_sf) ELSE CALL qs_fxc_fdiff(ks_env, rho0_struct, rho1_struct, xc_section, accuracy, is_triplet, & fxc_rho, fxc_tau) @@ -530,13 +539,13 @@ CONTAINS IF (do_sf) THEN ! variation in alpha density CALL qs_fxc_analytic(rhoin, rho1_r, tau1_r, & - xc_section, auxbas_pw_pool, is_triplet, & + xc_section, weights, auxbas_pw_pool, is_triplet, & vxc00, v_tau_rspace, spinflip=do_sf) ! variation in beta density CALL qs_rho_copy(rho0_struct, rhoin, auxbas_pw_pool, nspins) CALL qs_rho_scale_and_add_b(rhoin, rho1_struct, alpha, beta) CALL qs_fxc_analytic(rhoin, rho1_r, tau1_r, & - xc_section, auxbas_pw_pool, is_triplet, & + xc_section, weights, auxbas_pw_pool, is_triplet, & vxc00b, v_tau_rspace, spinflip=do_sf) ELSE CALL qs_fxc_fdiff(ks_env=ks_env, rho0_struct=rhoin, rho1_struct=rho1_struct, & diff --git a/src/qs_kernel_methods.F b/src/qs_kernel_methods.F index 346f1f91f7..ffdab58e73 100644 --- a/src/qs_kernel_methods.F +++ b/src/qs_kernel_methods.F @@ -92,6 +92,7 @@ CONTAINS TYPE(pw_env_type), POINTER :: pw_env TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_ij_r, rho_ij_r2, tau_ij_r, tau_ij_r2 + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(section_vals_type), POINTER :: xc_fun_section CALL timeset(routineN, handle) @@ -102,6 +103,13 @@ CONTAINS sab_orb => sub_env%sab_orb nspins = SIZE(sub_env%mos_occ) + + NULLIFY (weights) + weights => sub_env%xcint_weights + IF (sub_env%is_split .AND. ASSOCIATED(weights)) THEN + CPABORT("Split communicators and integration weights") + END IF + ELSE CPASSERT(PRESENT(qs_env)) @@ -111,6 +119,9 @@ CONTAINS sab_orb=sab_orb, & dft_control=dft_control) + NULLIFY (weights) + CALL get_qs_env(qs_env=qs_env, xcint_weights=weights) + nspins = dft_control%nspins IF (.NOT. ASSOCIATED(rho_struct_sub)) THEN @@ -154,14 +165,14 @@ CONTAINS END IF CALL xc_prep_2nd_deriv(kernel_env%xc_deriv_set, kernel_env%xc_rho_set, rho_ij_r2, & - auxbas_pw_pool, xc_section=xc_section, tau_r=tau_ij_r2) + auxbas_pw_pool, weights, xc_section=xc_section, tau_r=tau_ij_r2) IF (ASSOCIATED(tau_ij_r)) DEALLOCATE (tau_ij_r2) DEALLOCATE (rho_ij_r2) ELSE CALL xc_prep_2nd_deriv(kernel_env%xc_deriv_set, kernel_env%xc_rho_set, rho_ij_r, & - auxbas_pw_pool, xc_section=xc_section, tau_r=tau_ij_r) + auxbas_pw_pool, weights, xc_section=xc_section, tau_r=tau_ij_r) END IF ! ++ allocate structure for response density diff --git a/src/qs_kpp1_env_methods.F b/src/qs_kpp1_env_methods.F index 05b1201468..2ff3fe8229 100644 --- a/src/qs_kpp1_env_methods.F +++ b/src/qs_kpp1_env_methods.F @@ -148,6 +148,7 @@ CONTAINS TYPE(pw_r3d_rs_type) :: v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, rho1_r_pw, tau1_r, tau1_r_pw, & v_rspace_new, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_rho_type), POINTER :: rho TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho1_atom_set, rho_atom_set TYPE(section_vals_type), POINTER :: input, scf_section @@ -273,9 +274,12 @@ CONTAINS END IF + NULLIFY (weights) + CALL get_qs_env(qs_env, xcint_weights=weights) + CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set, p_env%kpp1_env%rho_set, & - rho1_r_pw, rho1_g_pw, tau1_r_pw, auxbas_pw_pool, xc_section, .FALSE., & - do_excitations=.TRUE., do_triplet=do_triplet, & + rho1_r_pw, rho1_g_pw, tau1_r_pw, auxbas_pw_pool, weights, & + xc_section, .FALSE., do_excitations=.TRUE., do_triplet=do_triplet, & compute_virial=calc_virial, virial_xc=virial) DO ispin = 1, nspins @@ -496,6 +500,7 @@ CONTAINS TYPE(pw_env_type), POINTER :: pw_env TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: my_rho_r, my_tau_r, rho_r, tau_r + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_rho_type), POINTER :: rho TYPE(section_vals_type), POINTER :: admm_xc_section, input, xc_section @@ -507,6 +512,9 @@ CONTAINS matrix_s=matrix_s, rho=rho, input=input, & admm_env=admm_env, dft_control=dft_control) + NULLIFY (weights) + CALL get_qs_env(qs_env, xcint_weights=weights) + CALL qs_rho_get(rho, rho_r=rho_r, tau_r=tau_r) nspins = SIZE(rho_r) @@ -551,7 +559,7 @@ CONTAINS ALLOCATE (kpp1_env%deriv_set, kpp1_env%rho_set) CALL xc_prep_2nd_deriv(kpp1_env%deriv_set, kpp1_env%rho_set, & - my_rho_r, auxbas_pw_pool, & + my_rho_r, auxbas_pw_pool, weights, & xc_section=xc_section, tau_r=my_tau_r) IF (nspins == 1 .AND. do_triplet) THEN @@ -578,7 +586,7 @@ CONTAINS CALL qs_rho_get(rho, rho_r=rho_r) ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm) CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, & - rho_r, auxbas_pw_pool, & + rho_r, auxbas_pw_pool, weights, & xc_section=admm_xc_section) END IF END IF diff --git a/src/qs_ks_methods.F b/src/qs_ks_methods.F index 0752dbbd1c..249fa4792f 100644 --- a/src/qs_ks_methods.F +++ b/src/qs_ks_methods.F @@ -20,6 +20,7 @@ !> - SCCS implementation (16.10.2013,MK) ! ************************************************************************************************** MODULE qs_ks_methods + USE accint_weights_forces, ONLY: accint_weight_force USE admm_dm_methods, ONLY: admm_dm_calc_rho_aux,& admm_dm_merge_ks_matrix USE admm_methods, ONLY: admm_mo_calc_rho_aux,& @@ -220,7 +221,7 @@ CONTAINS v_sccs_rspace, v_sic_rspace, v_spin_ddapc_rest_r, vee, vppl_rspace TYPE(qs_energy_type), POINTER :: energy TYPE(qs_ks_env_type), POINTER :: ks_env - TYPE(qs_rho_type), POINTER :: rho, rho_struct, rho_xc + TYPE(qs_rho_type), POINTER :: rho, rho1, rho_struct, rho_xc TYPE(section_vals_type), POINTER :: adiabatic_rescaling_section, & hfx_sections, input, scf_section, & xc_section @@ -716,6 +717,23 @@ CONTAINS v_sic_rspace, v_spin_ddapc_rest_r, v_sccs_rspace, v_rspace_embed, & cdft_control, calculate_forces) + IF (calculate_forces) THEN + IF (gapw_xc) THEN + CALL get_qs_env(qs_env=qs_env, rho_xc=rho_struct) + ELSE + CALL get_qs_env(qs_env=qs_env, rho=rho_struct) + END IF + NULLIFY (rho1) + CALL accint_weight_force(qs_env, rho_struct, rho1, 0, xc_section) + ! + IF (dft_control%do_admm) THEN + CALL get_qs_env(qs_env, admm_env=admm_env) + xc_section => admm_env%xc_section_aux + CALL get_admm_env(admm_env, rho_aux_fit=rho_struct) + CALL accint_weight_force(qs_env, rho_struct, rho1, 0, xc_section) + END IF + END IF + IF (use_virial .AND. calculate_forces) THEN virial%pv_ehartree = virial%pv_ehartree + (virial%pv_virial - pv_loc) END IF diff --git a/src/qs_ks_types.F b/src/qs_ks_types.F index af06083d06..73e953562b 100644 --- a/src/qs_ks_types.F +++ b/src/qs_ks_types.F @@ -140,7 +140,8 @@ MODULE qs_ks_types rho_changed = .TRUE., & potential_changed = .TRUE., & forces_up_to_date = .FALSE., & - complex_ks = .FALSE. + complex_ks = .FALSE., & + exc_accint = .FALSE. INTEGER :: n_evals = 0 ! hartree is supposed to contain the hartree potential (for cube output) @@ -167,6 +168,8 @@ MODULE qs_ks_types rho_nlcc => Null() TYPE(pw_c1d_gs_type), POINTER :: rho_nlcc_g => Null() + TYPE(pw_r3d_rs_type), POINTER :: xcint_weights => Null() + TYPE(pw_c1d_gs_type), POINTER :: rho_core => NULL() TYPE(pw_r3d_rs_type), POINTER :: vee => NULL() @@ -228,6 +231,7 @@ CONTAINS !> \param v_hartree_rspace ... !> \param s_mstruct_changed ... !> \param rho_changed ... +!> \param exc_accint ... !> \param potential_changed ... !> \param forces_up_to_date ... !> \param complex_ks ... @@ -254,6 +258,7 @@ CONTAINS !> \param rho ... !> \param rho_xc ... !> \param vppl ... +!> \param xcint_weights ... !> \param rho_core ... !> \param rho_nlcc ... !> \param rho_nlcc_g ... @@ -313,7 +318,7 @@ CONTAINS !> \param nelectron_spin ... ! ************************************************************************************************** SUBROUTINE get_ks_env(ks_env, v_hartree_rspace, & - s_mstruct_changed, rho_changed, & + s_mstruct_changed, rho_changed, exc_accint, & potential_changed, forces_up_to_date, complex_ks, & matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, & kinetic, matrix_s, & @@ -321,7 +326,7 @@ CONTAINS matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, & matrix_s_RI_aux_kp, matrix_ks_im_kp, & rho, rho_xc, & - vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, & + vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, & neighbor_list_id, & sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, & sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, & @@ -337,8 +342,8 @@ CONTAINS TYPE(qs_ks_env_type), INTENT(IN) :: ks_env TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: v_hartree_rspace LOGICAL, OPTIONAL :: s_mstruct_changed, rho_changed, & - potential_changed, forces_up_to_date, & - complex_ks + exc_accint, potential_changed, & + forces_up_to_date, complex_ks TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, POINTER :: matrix_h, matrix_h_im, matrix_ks, & matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, & matrix_p_mp2_admm @@ -346,7 +351,7 @@ CONTAINS matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, & matrix_ks_im_kp TYPE(qs_rho_type), OPTIONAL, POINTER :: rho, rho_xc - TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl + TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl, xcint_weights TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_core TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rho_nlcc TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_nlcc_g @@ -397,6 +402,7 @@ CONTAINS IF (PRESENT(potential_changed)) potential_changed = ks_env%potential_changed IF (PRESENT(forces_up_to_date)) forces_up_to_date = ks_env%forces_up_to_date IF (PRESENT(complex_ks)) complex_ks = ks_env%complex_ks + IF (PRESENT(exc_accint)) exc_accint = ks_env%exc_accint IF (PRESENT(v_hartree_rspace)) v_hartree_rspace => ks_env%v_hartree_rspace IF (PRESENT(matrix_ks)) matrix_ks => get_1d_pointer(ks_env%matrix_ks) @@ -423,6 +429,7 @@ CONTAINS IF (PRESENT(matrix_p_mp2_admm)) matrix_p_mp2_admm => ks_env%matrix_p_mp2_admm IF (PRESENT(rho)) rho => ks_env%rho IF (PRESENT(rho_xc)) rho_xc => ks_env%rho_xc + IF (PRESENT(xcint_weights)) xcint_weights => ks_env%xcint_weights IF (PRESENT(rho_core)) rho_core => ks_env%rho_core IF (PRESENT(rho_nlcc)) rho_nlcc => ks_env%rho_nlcc IF (PRESENT(rho_nlcc_g)) rho_nlcc_g => ks_env%rho_nlcc_g @@ -497,6 +504,7 @@ CONTAINS !> \param v_hartree_rspace ... !> \param s_mstruct_changed ... !> \param rho_changed ... +!> \param exc_accint ... !> \param potential_changed ... !> \param forces_up_to_date ... !> \param complex_ks ... @@ -521,6 +529,7 @@ CONTAINS !> \param matrix_s_RI_aux_kp ... !> \param matrix_ks_im_kp ... !> \param vppl ... +!> \param xcint_weights ... !> \param rho_core ... !> \param rho_nlcc ... !> \param rho_nlcc_g ... @@ -559,14 +568,14 @@ CONTAINS !> \param blacs_env ... ! ************************************************************************************************** SUBROUTINE set_ks_env(ks_env, v_hartree_rspace, & - s_mstruct_changed, rho_changed, & + s_mstruct_changed, rho_changed, exc_accint, & potential_changed, forces_up_to_date, complex_ks, & matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, & kinetic, matrix_s, & matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, & matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, & matrix_s_RI_aux_kp, matrix_ks_im_kp, & - vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, & + vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, & neighbor_list_id, & kpoints, & sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, & @@ -579,15 +588,15 @@ CONTAINS TYPE(qs_ks_env_type), INTENT(INOUT) :: ks_env TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: v_hartree_rspace LOGICAL, OPTIONAL :: s_mstruct_changed, rho_changed, & - potential_changed, forces_up_to_date, & - complex_ks + exc_accint, potential_changed, & + forces_up_to_date, complex_ks TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, POINTER :: matrix_h, matrix_h_im, matrix_ks, & matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, & matrix_p_mp2_admm TYPE(dbcsr_p_type), DIMENSION(:, :), OPTIONAL, POINTER :: matrix_h_kp, matrix_h_im_kp, & matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, & matrix_ks_im_kp - TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl + TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl, xcint_weights TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_core TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rho_nlcc TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_nlcc_g @@ -614,6 +623,7 @@ CONTAINS IF (PRESENT(complex_ks)) ks_env%complex_ks = complex_ks IF (ks_env%s_mstruct_changed .OR. ks_env%potential_changed .OR. ks_env%rho_changed) & ks_env%forces_up_to_date = .FALSE. + IF (PRESENT(exc_accint)) ks_env%exc_accint = exc_accint IF (PRESENT(v_hartree_rspace)) ks_env%v_hartree_rspace => v_hartree_rspace IF (PRESENT(matrix_h)) CALL set_1d_pointer(ks_env%matrix_h, matrix_h) @@ -645,6 +655,7 @@ CONTAINS IF (PRESENT(matrix_p_mp2)) ks_env%matrix_p_mp2 => matrix_p_mp2 IF (PRESENT(matrix_p_mp2_admm)) ks_env%matrix_p_mp2_admm => matrix_p_mp2_admm + IF (PRESENT(xcint_weights)) ks_env%xcint_weights => xcint_weights IF (PRESENT(rho_core)) ks_env%rho_core => rho_core IF (PRESENT(rho_nlcc)) ks_env%rho_nlcc => rho_nlcc IF (PRESENT(rho_nlcc_g)) ks_env%rho_nlcc_g => rho_nlcc_g @@ -771,6 +782,10 @@ CONTAINS IF (ASSOCIATED(ks_env%task_list_soft)) & CALL deallocate_task_list(ks_env%task_list_soft) + IF (ASSOCIATED(ks_env%xcint_weights)) THEN + CALL ks_env%xcint_weights%release() + DEALLOCATE (ks_env%xcint_weights) + END IF IF (ASSOCIATED(ks_env%rho_nlcc_g)) THEN CALL ks_env%rho_nlcc_g%release() DEALLOCATE (ks_env%rho_nlcc_g) @@ -871,6 +886,10 @@ CONTAINS IF (ASSOCIATED(ks_env%task_list_soft)) & CALL deallocate_task_list(ks_env%task_list_soft) + IF (ASSOCIATED(ks_env%xcint_weights)) THEN + CALL ks_env%xcint_weights%release() + DEALLOCATE (ks_env%xcint_weights) + END IF IF (ASSOCIATED(ks_env%rho_nlcc_g)) THEN CALL ks_env%rho_nlcc_g%release() DEALLOCATE (ks_env%rho_nlcc_g) diff --git a/src/qs_ks_utils.F b/src/qs_ks_utils.F index 9ac8f8ebcb..cd7756c509 100644 --- a/src/qs_ks_utils.F +++ b/src/qs_ks_utils.F @@ -119,7 +119,7 @@ MODULE qs_ks_utils USE task_list_types, ONLY: task_list_type USE virial_types, ONLY: virial_type USE xc, ONLY: xc_exc_calc,& - xc_vxc_pw_create1 + xc_vxc_pw_create #include "./base/base_uses.f90" IMPLICIT NONE @@ -179,6 +179,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: xc_pw_pool TYPE(pw_r3d_rs_type) :: work_v_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau, vxc, vxc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho TYPE(section_vals_type), POINTER :: hfx_section, input, & @@ -215,6 +216,7 @@ CONTAINS mos=mo_array, & rho=rho, & pw_env=pw_env, & + xcint_weights=weights, & input=input, & cell=cell, & virial=virial) @@ -225,6 +227,10 @@ CONTAINS xc_section => section_vals_get_subs_vals(input, "DFT%XC") hfx_section => section_vals_get_subs_vals(input, "DFT%XC%HF") + ! No accurate integration possible (as there is no GAPW) + IF (ASSOCIATED(weights)) THEN + CALL cp_abort(__LOCATION__, "No accurate xc integration possible.") + END IF ! some assumptions need to be checked ! we have two spins CPASSERT(SIZE(mo_array, 1) == 2) @@ -350,12 +356,13 @@ CONTAINS ! compute the exchange energies / potential if needed IF (just_energy) THEN exc = xc_exc_calc(rho_r=rho_r, rho_g=rho_g, tau=tau, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE CPASSERT(.NOT. compute_virial) - CALL xc_vxc_pw_create1(vxc_rho=vxc, rho_r=rho_r, & - rho_g=rho_g, tau=tau, vxc_tau=vxc_tau, exc=exc, xc_section=xc_section, & - pw_pool=xc_pw_pool, compute_virial=.FALSE., virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_rho=vxc, rho_r=rho_r, & + rho_g=rho_g, tau=tau, vxc_tau=vxc_tau, exc=exc, xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., virial_xc=virial_xc_tmp) END IF energy%exc = energy%exc + energy_scaling(iterm)*exc @@ -494,6 +501,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: xc_pw_pool TYPE(pw_r3d_rs_type) :: work_v_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau, vxc, vxc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_r3d_rs_type), TARGET :: orb_rho_r, tmp_r TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho @@ -512,6 +520,7 @@ CONTAINS mo_derivs=mo_derivs, & mos=mo_array, & rho=rho, & + xcint_weights=weights, & pw_env=pw_env, & input=input, & cell=cell, & @@ -685,12 +694,13 @@ CONTAINS IF (just_energy) THEN exc = xc_exc_calc(rho_r=rho_r, rho_g=rho_g, tau=tau, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE CPASSERT(.NOT. compute_virial) - CALL xc_vxc_pw_create1(vxc_rho=vxc, rho_r=rho_r, & - rho_g=rho_g, tau=tau, vxc_tau=vxc_tau, exc=exc, xc_section=xc_section, & - pw_pool=xc_pw_pool, compute_virial=compute_virial, virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_rho=vxc, rho_r=rho_r, & + rho_g=rho_g, tau=tau, vxc_tau=vxc_tau, exc=exc, xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=compute_virial, virial_xc=virial_xc_tmp) ! add to the existing work_v_rspace CALL pw_axpy(vxc(1), work_v_rspace, -dft_control%sic_scaling_b*vxc(1)%pw_grid%dvol) END IF diff --git a/src/qs_linres_kernel.F b/src/qs_linres_kernel.F index c6801be38f..c9ac0c1255 100644 --- a/src/qs_linres_kernel.F +++ b/src/qs_linres_kernel.F @@ -199,6 +199,7 @@ CONTAINS TYPE(pw_r3d_rs_type) :: v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, rho_r, tau1_r, v_rspace_new, & v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_kpp1_env_type), POINTER :: kpp1_env TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho, rho0, rho1, rho1_xc, rho1a, & @@ -318,7 +319,9 @@ CONTAINS NULLIFY (v_xc_tau) IF (deriv2_analytic) THEN CALL qs_rho_get(rho1a, rho_r=rho1_r, tau_r=tau1_r) - CALL qs_fxc_analytic(rho0, rho1_r, tau1_r, xc_section, auxbas_pw_pool, lr_triplet, v_xc, v_xc_tau) + CALL get_qs_env(qs_env, xcint_weights=weights) + CALL qs_fxc_analytic(rho0, rho1_r, tau1_r, xc_section, weights, auxbas_pw_pool, & + lr_triplet, v_xc, v_xc_tau) IF (gapw .OR. gapw_xc) THEN CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set) rho1_atom_set => p_env%local_rho_set%rho_atom_set @@ -344,12 +347,13 @@ CONTAINS IF (admm_env%aux_exch_func /= do_admm_aux_exch_func_none) THEN IF (.NOT. ASSOCIATED(kpp1_env%deriv_set_admm)) THEN CPASSERT(.NOT. lr_triplet) + CALL get_qs_env(qs_env, xcint_weights=weights) xc_section_aux => admm_env%xc_section_aux CALL get_admm_env(qs_env%admm_env, rho_aux_fit=rho_aux) CALL qs_rho_get(rho_aux, rho_r=rho_r) ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm) CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, & - rho_r, auxbas_pw_pool, & + rho_r, auxbas_pw_pool, weights, & xc_section=xc_section_aux) END IF END IF @@ -848,6 +852,7 @@ CONTAINS TYPE(pw_env_type), POINTER :: pw_env TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_aux_r, tau_pw, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho1_atom_set, rho_atom_set TYPE(section_vals_type), POINTER :: xc_fun_section, xc_section TYPE(task_list_type), POINTER :: task_list @@ -882,6 +887,9 @@ CONTAINS CALL get_qs_env(qs_env, admm_env=admm_env) gapw = admm_env%do_gapw + NULLIFY (weights) + CALL get_qs_env(qs_env=qs_env, xcint_weights=weights) + CALL qs_rho_get(p_env%rho1_admm, rho_r=rho1_aux_r, rho_g=rho1_aux_g) xc_section => admm_env%xc_section_aux bo = rho1_aux_r(1)%pw_grid%bounds_local @@ -900,7 +908,7 @@ CONTAINS section_get_ival(xc_section, "XC_GRID%XC_SMOOTH_RHO"), & auxbas_pw_pool) CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set_admm, p_env%kpp1_env%rho_set_admm, & - rho1_aux_r, rho1_aux_g, tau_pw, auxbas_pw_pool, gapw=.FALSE., & + rho1_aux_r, rho1_aux_g, tau_pw, auxbas_pw_pool, weights, gapw=.FALSE., & xc_section=xc_section) IF (ASSOCIATED(v_xc_tau)) THEN CPABORT("Meta-GGA ADMM functionals not yet supported!") diff --git a/src/qs_tddfpt2_fhxc.F b/src/qs_tddfpt2_fhxc.F index eea60afc6a..0e2ed36b5a 100644 --- a/src/qs_tddfpt2_fhxc.F +++ b/src/qs_tddfpt2_fhxc.F @@ -131,6 +131,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), ALLOCATABLE, DIMENSION(:) :: V_rspace_sub TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_ia_r, rho_ia_r_aux_fit + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho1_atom_set, rho_atom_set TYPE(task_list_type), POINTER :: task_list @@ -164,6 +165,9 @@ CONTAINS rho_r=rho_ia_r_aux_fit) END IF + NULLIFY (weights) + CALL get_qs_env(qs_env, xcint_weights=weights) + DO ivect = 1, nvects ! Transform TDDFT vectors to AO space and store them into rho_ia_ao @@ -252,6 +256,7 @@ CONTAINS CALL tddfpt_apply_xc(A_ia_rspace=work_matrices%A_ia_rspace_sub, kernel_env=kernel_env, & rho_ia_struct=work_matrices%rho_xc_struct_sub, & is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, & + weights=weights, & work_v_xc=work_matrices%wpw_rspace_sub, & work_v_xc_tau=work_matrices%wpw_tau_rspace_sub, & spinflip=spinflip) @@ -274,6 +279,7 @@ CONTAINS CALL tddfpt_apply_xc(A_ia_rspace=work_matrices%A_ia_rspace_sub, kernel_env=kernel_env, & rho_ia_struct=work_matrices%rho_orb_struct_sub, & is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, & + weights=weights, & work_v_xc=work_matrices%wpw_rspace_sub, & work_v_xc_tau=work_matrices%wpw_tau_rspace_sub, & spinflip=spinflip) @@ -332,6 +338,7 @@ CONTAINS 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, & + weights=weights, & work_v_xc=work_matrices%wpw_rspace_sub, & work_v_xc_tau=work_matrices%wpw_tau_rspace_sub, & spinflip=spinflip) @@ -392,6 +399,7 @@ CONTAINS 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, & + weights=weights, & work_v_xc=work_matrices%wpw_rspace_sub, & work_v_xc_tau=work_matrices%wpw_tau_rspace_sub, & spinflip=spinflip) diff --git a/src/qs_tddfpt2_fhxc_forces.F b/src/qs_tddfpt2_fhxc_forces.F index eed44b7182..ca42536b95 100644 --- a/src/qs_tddfpt2_fhxc_forces.F +++ b/src/qs_tddfpt2_fhxc_forces.F @@ -6,6 +6,7 @@ !--------------------------------------------------------------------------------------------------! MODULE qs_tddfpt2_fhxc_forces + USE accint_weights_forces, ONLY: accint_weight_force USE admm_methods, ONLY: admm_projection_derivative USE admm_types, ONLY: admm_type,& get_admm_env @@ -218,6 +219,7 @@ CONTAINS TYPE(pw_r3d_rs_type) :: xv_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: fxc_rho, fxc_tau, gxc_rho, gxc_tau, & rho_r_aux, rhox_r, rhox_r_aux, rhoxx_r + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_force_type), DIMENSION(:), POINTER :: force TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(qs_ks_env_type), POINTER :: ks_env @@ -282,6 +284,7 @@ CONTAINS END DO ! CALL get_qs_env(qs_env, ks_env=ks_env, pw_env=pw_env, para_env=para_env) + CALL get_qs_env(qs_env, xcint_weights=weights) ! NULLIFY (hartree_local, local_rho_set, local_rho_set_admm) IF (gapw .OR. gapw_xc) THEN @@ -554,13 +557,14 @@ CONTAINS IF (.NOT. do_sf) THEN CPABORT("Analytic 3rd EXC derivatives not available") ELSE !TODO - CALL qs_fgxc_analytic(rho, rhox, xc_section, auxbas_pw_pool, & + CALL get_qs_env(qs_env, xcint_weights=weights) + CALL qs_fgxc_analytic(rho, rhox, xc_section, weights, auxbas_pw_pool, & fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip=do_sf) END IF ELSEIF (do_numeric) THEN IF (do_analytic) THEN CALL qs_fgxc_gdiff(ks_env, rho, rhox, xc_section, order, eps_delta, is_rks_triplets, & - fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip=do_sf) + weights, fxc_rho, fxc_tau, gxc_rho, gxc_tau, spinflip=do_sf) ELSE CALL qs_fgxc_create(ks_env, rho, rhox, xc_section, order, is_rks_triplets, & fxc_rho, fxc_tau, gxc_rho, gxc_tau) @@ -569,12 +573,6 @@ CONTAINS CPABORT("FHXC forces analytic/numeric") END IF - ! Well, this is a hack :-( - ! When qs_rho_set() was called on rhox it assumed ownership of the passed arrays. - ! However, these arrays actually belong to ex_env. Hence, we can not call qs_rho_release() - ! because this would release the arrays. Instead we're simply going to deallocate rhox. - DEALLOCATE (rhox) - IF (nspins == 2) THEN DO ispin = 1, nspins CALL pw_scale(gxc_rho(ispin), 0.5_dp) @@ -644,6 +642,21 @@ CONTAINS END IF CALL qs_fgxc_release(ks_env, fxc_rho, fxc_tau, gxc_rho, gxc_tau) + ! grid weight contribution to forces + IF (debug_forces) fodeb(1:3) = force(1)%rho_elec(1:3, 1) + CALL accint_weight_force(qs_env, rho, rhox, 2, xc_section, is_rks_triplets) + IF (debug_forces) THEN + fodeb(1:3) = force(1)%rho_elec(1:3, 1) - fodeb(1:3) + CALL para_env%sum(fodeb) + IF (iounit > 0) WRITE (iounit, "(T3,A,T33,3F16.8)") "DEBUG:: Dx*fxc[Dx]*dw", fodeb + END IF + + ! Well, this is a hack :-( + ! When qs_rho_set() was called on rhox it assumed ownership of the passed arrays. + ! However, these arrays actually belong to ex_env. Hence, we can not call qs_rho_release() + ! because this would release the arrays. Instead we're simply going to deallocate rhox. + DEALLOCATE (rhox) + IF (gapw .OR. gapw_xc) THEN IF (debug_forces) fodeb(1:3) = force(1)%Vhxc_atom(1:3, 1) CALL update_ks_atom(qs_env, matrix_fx, matrix_px1, forces=.TRUE., tddft=.TRUE., & @@ -734,7 +747,7 @@ CONTAINS ELSEIF (do_numeric) THEN IF (do_analytic) THEN CALL qs_fgxc_gdiff(ks_env, rho_aux_fit, rhox_aux, xc_section, order, eps_delta, & - is_rks_triplets, fxc_rho, fxc_tau, gxc_rho, gxc_tau) + is_rks_triplets, weights, fxc_rho, fxc_tau, gxc_rho, gxc_tau) ELSE CALL qs_fgxc_create(ks_env, rho_aux_fit, rhox_aux, xc_section, & order, is_rks_triplets, fxc_rho, fxc_tau, gxc_rho, gxc_tau) @@ -743,6 +756,17 @@ CONTAINS CPABORT("FHXC forces analytic/numeric") END IF + ! grid weight contribution to forces ADMM XC correction term + IF (debug_forces) fodeb(1:3) = force(1)%rho_elec(1:3, 1) + ! + CALL accint_weight_force(qs_env, rho_aux_fit, rhox_aux, 2, xc_section, is_rks_triplets) + ! + IF (debug_forces) THEN + fodeb(1:3) = force(1)%rho_elec(1:3, 1) - fodeb(1:3) + CALL para_env%sum(fodeb) + IF (iounit > 0) WRITE (iounit, "(T3,A,T33,3F16.8)") "DEBUG:: Dx_admm*fxc[Dx_admm]*dw", fodeb + END IF + ! Well, this is a hack :-( ! When qs_rho_set() was called on rhox_aux it assumed ownership of the passed arrays. ! However, these arrays actually belong to ex_env. Hence, we can not call qs_rho_release() diff --git a/src/qs_tddfpt2_forces.F b/src/qs_tddfpt2_forces.F index 4146891283..5b3b1e67d7 100644 --- a/src/qs_tddfpt2_forces.F +++ b/src/qs_tddfpt2_forces.F @@ -816,6 +816,7 @@ CONTAINS TYPE(pw_r3d_rs_type) :: v_hartree_rspace TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, rho_r_aux, rhoz_r_aux, tau_r, & trho_r, trho_xc_r, v_xc, v_xc_tau + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho, rho_aux_fit, rho_xc, rhoz_aux, trho @@ -960,11 +961,14 @@ CONTAINS deriv2_analytic = section_get_lval(xc_section, "2ND_DERIV_ANALYTICAL") IF (deriv2_analytic) THEN NULLIFY (v_xc, v_xc_tau, tau_r) + CALL get_qs_env(qs_env=qs_env, xcint_weights=weights) IF (gapw_xc) THEN CALL get_qs_env(qs_env=qs_env, rho_xc=rho_xc) - CALL qs_fxc_analytic(rho_xc, trho_xc_r, tau_r, xc_section, auxbas_pw_pool, .FALSE., v_xc, v_xc_tau) + CALL qs_fxc_analytic(rho_xc, trho_xc_r, tau_r, xc_section, weights, auxbas_pw_pool, & + .FALSE., v_xc, v_xc_tau) ELSE - CALL qs_fxc_analytic(rho, trho_r, tau_r, xc_section, auxbas_pw_pool, .FALSE., v_xc, v_xc_tau) + CALL qs_fxc_analytic(rho, trho_r, tau_r, xc_section, weights, auxbas_pw_pool, & + .FALSE., v_xc, v_xc_tau) END IF IF (gapw .OR. gapw_xc) THEN CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set) @@ -1092,8 +1096,10 @@ CONTAINS NULLIFY (v_xc) deriv2_analytic = section_get_lval(xc_section, "2ND_DERIV_ANALYTICAL") IF (deriv2_analytic) THEN + CALL get_qs_env(qs_env=qs_env, xcint_weights=weights) NULLIFY (tau_r) - CALL qs_fxc_analytic(rho_aux_fit, rhoz_r_aux, tau_r, xc_section, auxbas_pw_pool, .FALSE., v_xc, v_xc_tau) + CALL qs_fxc_analytic(rho_aux_fit, rhoz_r_aux, tau_r, xc_section, weights, auxbas_pw_pool, & + .FALSE., v_xc, v_xc_tau) ELSE CPABORT("NYA 00007") NULLIFY (rhoz_aux) diff --git a/src/qs_tddfpt2_operators.F b/src/qs_tddfpt2_operators.F index 383b3d076d..0429dc4776 100644 --- a/src/qs_tddfpt2_operators.F +++ b/src/qs_tddfpt2_operators.F @@ -82,7 +82,8 @@ MODULE qs_tddfpt2_operators INTEGER, PARAMETER, PRIVATE :: maxspins = 2 PUBLIC :: tddfpt_apply_energy_diff, tddfpt_apply_coulomb, tddfpt_apply_xc, tddfpt_apply_hfx, & - tddfpt_apply_xc_potential, tddfpt_apply_hfxlr_kernel, tddfpt_apply_hfxsr_kernel + tddfpt_apply_xc_potential, tddfpt_apply_hfxlr_kernel, tddfpt_apply_hfxsr_kernel, & + tddfpt_apply_xc_fd ! ************************************************************************************************** @@ -282,19 +283,21 @@ CONTAINS !> \param is_rks_triplets indicates that the triplet excited states calculation using !> spin-unpolarised molecular orbitals has been requested !> \param pw_env plain wave environment +!> \param weights ... !> \param work_v_xc work real-space grid to store the gradient of the exchange-correlation !> potential with respect to the response density (modified on exit) !> \param work_v_xc_tau ... !> \param spinflip ... ! ************************************************************************************************** SUBROUTINE tddfpt_apply_xc(A_ia_rspace, kernel_env, rho_ia_struct, is_rks_triplets, & - pw_env, work_v_xc, work_v_xc_tau, spinflip) + pw_env, weights, work_v_xc, work_v_xc_tau, spinflip) TYPE(pw_r3d_rs_type), DIMENSION(:), INTENT(INOUT) :: A_ia_rspace TYPE(full_kernel_env_type), INTENT(IN) :: kernel_env TYPE(qs_rho_type), POINTER :: rho_ia_struct LOGICAL, INTENT(in) :: is_rks_triplets TYPE(pw_env_type), POINTER :: pw_env + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: work_v_xc, work_v_xc_tau INTEGER, INTENT(in), OPTIONAL :: spinflip @@ -308,8 +311,8 @@ CONTAINS CALL tddfpt_apply_xc_analytic(kernel_env, rho_ia_struct, is_rks_triplets, my_spinflip, & nspins, pw_env, work_v_xc, work_v_xc_tau) ELSE - CALL tddfpt_apply_xc_fd(kernel_env, rho_ia_struct, is_rks_triplets, nspins, & - pw_env, work_v_xc, work_v_xc_tau) + CALL tddfpt_apply_xc_fd(kernel_env%xc_rho_set, rho_ia_struct, is_rks_triplets, nspins, & + pw_env, kernel_env%xc_section, weights, work_v_xc, work_v_xc_tau) END IF DO ispin = 1, nspins @@ -464,65 +467,52 @@ CONTAINS ! ************************************************************************************************** !> \brief Update A_ia_munu by adding exchange-correlation term using finite difference methods. -!> \param kernel_env kernel environment -!> \param rho_ia_struct response density for the given trial vector +!> \param rho_set electron density +!> \param rho1_struct response density for the given trial vector !> \param is_rks_triplets indicates that the triplet excited states calculation using !> spin-unpolarised molecular orbitals has been requested !> \param nspins ... !> \param pw_env plain wave environment -!> \param work_v_xc work real-space grid to store the gradient of the exchange-correlation +!> \param xc_section ... +!> \param weights ... +!> \param f_xc work real-space grid to store the gradient of the exchange-correlation !> potential with respect to the response density (modified on exit) -!> \param work_v_xc_tau ... +!> \param f_xc_tau ... ! ************************************************************************************************** - SUBROUTINE tddfpt_apply_xc_fd(kernel_env, rho_ia_struct, is_rks_triplets, nspins, & - pw_env, work_v_xc, work_v_xc_tau) - TYPE(full_kernel_env_type), INTENT(in) :: kernel_env - TYPE(qs_rho_type), POINTER :: rho_ia_struct + SUBROUTINE tddfpt_apply_xc_fd(rho_set, rho1_struct, is_rks_triplets, nspins, & + pw_env, xc_section, weights, f_xc, f_xc_tau) + TYPE(xc_rho_set_type), POINTER :: rho_set + TYPE(qs_rho_type), POINTER :: rho1_struct LOGICAL, INTENT(in) :: is_rks_triplets INTEGER, INTENT(in) :: nspins TYPE(pw_env_type), POINTER :: pw_env - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: work_v_xc, work_v_xc_tau + TYPE(section_vals_type), POINTER :: xc_section + TYPE(pw_r3d_rs_type), POINTER :: weights + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: f_xc, f_xc_tau CHARACTER(LEN=*), PARAMETER :: routineN = 'tddfpt_apply_xc_fd' INTEGER :: handle, ispin - LOGICAL :: lsd, singlet, triplet TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho1_g TYPE(pw_pool_type), POINTER :: auxbas_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, tau1_r - TYPE(xc_rho_set_type), POINTER :: rho_set CALL timeset(routineN, handle) - CALL qs_rho_get(rho_ia_struct, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r) + CALL qs_rho_get(rho1_struct, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r) CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool) DO ispin = 1, nspins - CALL pw_zero(work_v_xc(ispin)) + CALL pw_zero(f_xc(ispin)) END DO - rho_set => kernel_env%xc_rho_set - - singlet = .FALSE. - triplet = .FALSE. - lsd = .FALSE. - IF (nspins == 1 .AND. .NOT. is_rks_triplets) THEN - singlet = .TRUE. - ELSE IF (nspins == 1 .AND. is_rks_triplets) THEN - triplet = .TRUE. - ELSE IF (nspins == 2) THEN - lsd = .TRUE. - ELSE - CPABORT("illegal options") - END IF IF (ASSOCIATED(tau1_r)) THEN DO ispin = 1, nspins - CALL pw_zero(work_v_xc_tau(ispin)) + CALL pw_zero(f_xc_tau(ispin)) END DO END IF - CALL xc_calc_2nd_deriv_numerical(work_v_xc, work_v_xc_tau, rho_set, rho1_r, rho1_g, tau1_r, & - auxbas_pw_pool, kernel_env%xc_section, & - is_rks_triplets) + CALL xc_calc_2nd_deriv_numerical(f_xc, f_xc_tau, rho_set, rho1_r, rho1_g, tau1_r, & + auxbas_pw_pool, weights, xc_section, is_rks_triplets) CALL timestop(handle) diff --git a/src/qs_tddfpt2_subgroups.F b/src/qs_tddfpt2_subgroups.F index a479dff57b..009f80a27c 100644 --- a/src/qs_tddfpt2_subgroups.F +++ b/src/qs_tddfpt2_subgroups.F @@ -59,6 +59,7 @@ MODULE qs_tddfpt2_subgroups USE pw_env_types, ONLY: pw_env_release,& pw_env_retain,& pw_env_type + USE pw_types, ONLY: pw_r3d_rs_type USE qs_environment_types, ONLY: get_qs_env,& qs_environment_type USE qs_kind_types, ONLY: get_qs_kind,& @@ -129,6 +130,8 @@ MODULE qs_tddfpt2_subgroups TYPE(distribution_2d_type), POINTER :: dist_2d => NULL() !> group-specific plane wave environment TYPE(pw_env_type), POINTER :: pw_env => NULL() + !> integration weights + TYPE(pw_r3d_rs_type), POINTER :: xcint_weights => Null() !> lists of neighbours in auxiliary and primary basis sets TYPE(neighbor_list_set_p_type), & DIMENSION(:), POINTER :: sab_aux_fit => NULL(), sab_orb => NULL() @@ -196,6 +199,7 @@ CONTAINS TYPE(mgrid_saved_parameters) :: mgrid_saved TYPE(mp_para_env_type), POINTER :: para_env_global TYPE(pw_env_type), POINTER :: pw_env_global + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_control_type), POINTER :: qs_control TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(tddfpt2_control_type), POINTER :: tddfpt_control @@ -220,6 +224,12 @@ CONTAINS ALLOCATE (sub_env%mos_active(nspins)) NULLIFY (sub_env%admm_A) + CALL get_qs_env(qs_env, xcint_weights=weights) + sub_env%xcint_weights => weights + IF (sub_env%is_split .AND. ASSOCIATED(weights)) THEN + CPABORT('subgroups and integration weights not compatible') + END IF + IF (sub_env%is_split) THEN ALLOCATE (sub_env%group_distribution(0:para_env_global%num_pe - 1)) @@ -295,6 +305,10 @@ CONTAINS IF (tddfpt_control%mgrid_is_explicit) & CALL init_tddfpt_mgrid(qs_control, tddfpt_control, mgrid_saved) + IF (ASSOCIATED(weights)) THEN + CPABORT('Redefining MGRID and integration weights not compatible') + END IF + NULLIFY (sub_env%pw_env) CALL pw_env_create(sub_env%pw_env) diff --git a/src/qs_update_s_mstruct.F b/src/qs_update_s_mstruct.F index 5a33bd87b0..dd9017adf9 100644 --- a/src/qs_update_s_mstruct.F +++ b/src/qs_update_s_mstruct.F @@ -20,7 +20,8 @@ MODULE qs_update_s_mstruct do_ppl_grid,& kg_tnadd_embed,& kg_tnadd_embed_ri - USE kinds, ONLY: default_string_length + USE kinds, ONLY: default_string_length,& + dp USE pw_methods, ONLY: pw_transfer USE pw_types, ONLY: pw_c1d_gs_type,& pw_r3d_rs_type @@ -67,11 +68,13 @@ CONTAINS CHARACTER(len=*), PARAMETER :: routineN = 'qs_env_update_s_mstruct' - INTEGER :: handle + INTEGER :: handle, nk LOGICAL :: do_ppl + REAL(KIND=dp) :: wtot + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: cw TYPE(dft_control_type), POINTER :: dft_control TYPE(pw_c1d_gs_type), POINTER :: rho_core, rho_nlcc_g - TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, vppl + TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, vppl, xcint_weights CALL timeset(routineN, handle) @@ -130,6 +133,19 @@ CONTAINS CALL pw_transfer(rho_nlcc, rho_nlcc_g) END IF + ! compute the xcint_weights + IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc) THEN + IF (dft_control%qs_control%gapw_control%accurate_xcint) THEN + CALL get_qs_env(qs_env, xcint_weights=xcint_weights, nkind=nk) + ALLOCATE (cw(nk)) + cw = 1.0_dp + CALL calculate_rho_core(xcint_weights, wtot, qs_env, & + dft_control%qs_control%gapw_control%aw, cw) + xcint_weights%array = 1.0_dp + xcint_weights%array + DEALLOCATE (cw) + END IF + END IF + ! allocates and creates the task_list CALL qs_create_task_list(qs_env) diff --git a/src/qs_vxc.F b/src/qs_vxc.F index ea1162d46e..94bc20a393 100644 --- a/src/qs_vxc.F +++ b/src/qs_vxc.F @@ -49,7 +49,7 @@ MODULE qs_vxc USE virial_types, ONLY: virial_type USE xc, ONLY: calc_xc_density,& xc_exc_calc,& - xc_vxc_pw_create1 + xc_vxc_pw_create #include "./base/base_uses.f90" IMPLICIT NONE @@ -126,7 +126,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool, vdw_pw_pool, xc_pw_pool TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: my_vxc_rho, my_vxc_tau, rho_m_rspace, & rho_r, rho_struct_r, tau, tau_struct_r - TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, tmp_pw + TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, tmp_pw, weights TYPE(virial_type), POINTER :: virial CALL timeset(routineN, handle) @@ -151,6 +151,7 @@ CONTAINS dft_control=dft_control, & pw_env=pw_env, & cell=cell, & + xcint_weights=weights, & virial=virial, & rho_nlcc=rho_nlcc, & rho_nlcc_g=rho_nlcc_g) @@ -252,7 +253,10 @@ CONTAINS END DO IF (tau_r_valid) THEN ! tau with finer grids is not implemented (at least not correctly), which this asserts - CPABORT("tau with finer grids not implemented") + CPABORT("Tau (MGGA) with finer grids not implemented") + END IF + IF (ASSOCIATED(weights)) THEN + CPABORT("Accurate integration with finer grids not implemented") END IF END IF @@ -272,15 +276,15 @@ CONTAINS IF (my_just_energy) THEN exc = xc_exc_calc(rho_r=rho_r, tau=tau, & rho_g=rho_g, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE - CALL xc_vxc_pw_create1(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_r, & - rho_g=rho_g, tau=tau, exc=exc, & - xc_section=xc_section, & - pw_pool=xc_pw_pool, & - compute_virial=compute_virial, & - virial_xc=virial%pv_xc) + CALL xc_vxc_pw_create(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_r, & + rho_g=rho_g, tau=tau, exc=exc, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=compute_virial, & + virial_xc=virial%pv_xc) END IF ! remove the nlcc densities (keep stuff in original state) @@ -377,16 +381,16 @@ CONTAINS IF (my_just_energy) THEN exc_m = xc_exc_calc(rho_r=rho_m_rspace, tau=tau, & rho_g=rho_m_gspace, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE ! virial untested CPASSERT(.NOT. compute_virial) - CALL xc_vxc_pw_create1(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_m_rspace, & - rho_g=rho_m_gspace, tau=tau, exc=exc_m, & - xc_section=xc_section, & - pw_pool=xc_pw_pool, & - compute_virial=.FALSE., & - virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_m_rspace, & + rho_g=rho_m_gspace, tau=tau, exc=exc_m, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., & + virial_xc=virial_xc_tmp) END IF exc = exc - dft_control%sic_scaling_b*exc_m @@ -438,16 +442,16 @@ CONTAINS IF (my_just_energy) THEN exc_m = xc_exc_calc(rho_r=rho_m_rspace, tau=tau, & rho_g=rho_m_gspace, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE ! virial untested CPASSERT(.NOT. compute_virial) - CALL xc_vxc_pw_create1(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_m_rspace, & - rho_g=rho_m_gspace, tau=tau, exc=exc_m, & - xc_section=xc_section, & - pw_pool=xc_pw_pool, & - compute_virial=.FALSE., & - virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_m_rspace, & + rho_g=rho_m_gspace, tau=tau, exc=exc_m, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., & + virial_xc=virial_xc_tmp) END IF exc = exc - dft_control%sic_scaling_b*nelec_spin(ispin)*exc_m @@ -484,16 +488,16 @@ CONTAINS IF (my_just_energy) THEN exc_m = xc_exc_calc(rho_r=rho_r, tau=tau, & rho_g=rho_g, xc_section=xc_section, & - pw_pool=xc_pw_pool) + weights=weights, pw_pool=xc_pw_pool) ELSE ! virial untested CPASSERT(.NOT. compute_virial) - CALL xc_vxc_pw_create1(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_r, & - rho_g=rho_g, tau=tau, exc=exc_m, & - xc_section=xc_section, & - pw_pool=xc_pw_pool, & - compute_virial=.FALSE., & - virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_rho=my_vxc_rho, vxc_tau=my_vxc_tau, rho_r=rho_r, & + rho_g=rho_g, tau=tau, exc=exc_m, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., & + virial_xc=virial_xc_tmp) END IF exc = exc + dft_control%sic_scaling_b*exc_m @@ -564,25 +568,27 @@ CONTAINS !> \param dispersion_env ... !> \param xc_ener will contain the xc energy density E_xc(r) - V_xc(r)*rho(r) !> \param xc_den will contain the xc energy density E_xc(r)/rho(r) +!> \param exc will contain the xc energy density E_xc(r) !> \param vxc ... !> \param vtau ... !> \author JGH ! ************************************************************************************************** SUBROUTINE qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env, & - xc_ener, xc_den, vxc, vtau) + xc_ener, xc_den, exc, vxc, vtau) TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho_struct TYPE(section_vals_type), POINTER :: xc_section TYPE(qs_dispersion_type), OPTIONAL, POINTER :: dispersion_env TYPE(pw_r3d_rs_type), INTENT(INOUT), OPTIONAL :: xc_ener, xc_den + TYPE(pw_r3d_rs_type), OPTIONAL :: exc TYPE(pw_r3d_rs_type), DIMENSION(:), OPTIONAL :: vxc, vtau CHARACTER(len=*), PARAMETER :: routineN = 'qs_xc_density' INTEGER :: handle, ispin, myfun, nspins, vdw LOGICAL :: rho_g_valid, tau_r_valid, uf_grid, vdW_nl - REAL(KIND=dp) :: edisp, exc, factor, rho_cutoff + REAL(KIND=dp) :: edisp, excint, factor, rho_cutoff REAL(KIND=dp), DIMENSION(3, 3) :: vdum TYPE(cell_type), POINTER :: cell TYPE(dft_control_type), POINTER :: dft_control @@ -593,7 +599,7 @@ CONTAINS TYPE(pw_pool_type), POINTER :: auxbas_pw_pool, vdw_pw_pool, xc_pw_pool TYPE(pw_r3d_rs_type) :: exc_r TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau_r, vxc_rho, vxc_tau - TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc + TYPE(pw_r3d_rs_type), POINTER :: rho_nlcc, weights CALL timeset(routineN, handle) @@ -601,6 +607,7 @@ CONTAINS dft_control=dft_control, & pw_env=pw_env, & cell=cell, & + xcint_weights=weights, & rho_nlcc=rho_nlcc, & rho_nlcc_g=rho_nlcc_g) @@ -637,6 +644,9 @@ CONTAINS IF (PRESENT(xc_den)) THEN CALL pw_zero(xc_den) END IF + IF (PRESENT(exc)) THEN + CALL pw_zero(exc) + END IF IF (PRESENT(vxc)) THEN DO ispin = 1, nspins CALL pw_zero(vxc(ispin)) @@ -662,13 +672,13 @@ CONTAINS END DO END IF NULLIFY (vxc_rho, vxc_tau) - CALL xc_vxc_pw_create1(vxc_rho=vxc_rho, vxc_tau=vxc_tau, rho_r=rho_r, & - rho_g=rho_g, tau=tau_r, exc=exc, & - xc_section=xc_section, & - pw_pool=xc_pw_pool, & - compute_virial=.FALSE., & - virial_xc=vdum, & - exc_r=exc_r) + CALL xc_vxc_pw_create(vxc_rho=vxc_rho, vxc_tau=vxc_tau, rho_r=rho_r, & + rho_g=rho_g, tau=tau_r, exc=excint, & + xc_section=xc_section, & + weights=weights, pw_pool=xc_pw_pool, & + compute_virial=.FALSE., & + virial_xc=vdum, & + exc_r=exc_r) ! calclulate non-local vdW functional ! only if this XC_SECTION has it ! if yes, we use the dispersion_env from ks_env @@ -703,6 +713,9 @@ CONTAINS CALL pw_multiply(xc_ener, vxc_rho(ispin), rho_r(ispin), alpha=-1.0_dp) END DO END IF + IF (PRESENT(exc)) THEN + CALL pw_copy(exc_r, exc) + END IF IF (PRESENT(vxc)) THEN DO ispin = 1, nspins CALL pw_copy(vxc_rho(ispin), vxc(ispin)) diff --git a/src/qs_vxc_atom.F b/src/qs_vxc_atom.F index c3c88edb94..679a328353 100644 --- a/src/qs_vxc_atom.F +++ b/src/qs_vxc_atom.F @@ -100,13 +100,14 @@ CONTAINS myfun, na, natom, nr, nspins, num_pe INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: donlcc, gradient_f, lsd, nlcc, paw_atom, & - tau_f - REAL(dp) :: density_cut, exc_h, exc_s, gradient_cut, & + LOGICAL :: accint, donlcc, gradient_f, lsd, nlcc, & + paw_atom, tau_f + REAL(dp) :: agr, alpha, density_cut, exc_h, exc_s, & + gradient_cut, & my_adiabatic_rescale_factor, tau_cut REAL(dp), DIMENSION(1, 1, 1) :: tau_d REAL(dp), DIMENSION(1, 1, 1, 1) :: rho_d - REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight + REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight_h, weight_s REAL(dp), DIMENSION(:, :, :), POINTER :: rho_h, rho_s, tau_h, tau_s, vtau_h, & vtau_s, vxc_h, vxc_s REAL(dp), DIMENSION(:, :, :, :), POINTER :: drho_h, drho_s, vxg_h, vxg_s @@ -159,6 +160,7 @@ CONTAINS IF (PRESENT(rho_atom_set_external)) my_rho_atom_set => rho_atom_set_external nlcc = has_nlcc(my_kind_set) + accint = dft_control%qs_control%gapw_control%accurate_xcint my_xc_section => section_vals_get_subs_vals(input, "DFT%XC") @@ -193,7 +195,7 @@ CONTAINS exc1 = 0.0_dp ! Nullify some pointers for work-arrays - NULLIFY (rho_h, drho_h, rho_s, drho_s, weight) + NULLIFY (rho_h, drho_h, rho_s, drho_s, weight_h, weight_s) NULLIFY (vxc_h, vxc_s, vxg_h, vxg_s) NULLIFY (tau_h, tau_s) NULLIFY (vtau_h, vtau_s) @@ -220,6 +222,20 @@ CONTAINS bounds(2, 1) = na bounds(2, 2) = nr + ! set integration weights + IF (accint) THEN + weight_h => grid_atom%weight + ALLOCATE (weight_s(na, nr)) + alpha = dft_control%qs_control%gapw_control%aw(ikind) + DO ir = 1, nr + agr = 1.0_dp - EXP(-alpha*grid_atom%rad2(ir)) + weight_s(:, ir) = grid_atom%weight(:, ir)*agr + END DO + ELSE + weight_h => grid_atom%weight + weight_s => grid_atom%weight + END IF + ! create a place where to put the derivatives CALL xc_dset_create(deriv_set, local_bounds=bounds) ! create the place where to store the argument for the functionals @@ -234,7 +250,6 @@ CONTAINS CALL reallocate(rho_h, 1, na, 1, nr, 1, nspins) CALL reallocate(rho_s, 1, na, 1, nr, 1, nspins) - weight => grid_atom%weight CALL reallocate(vxc_h, 1, na, 1, nr, 1, nspins) CALL reallocate(vxc_s, 1, na, 1, nr, 1, nspins) ! @@ -320,7 +335,7 @@ CONTAINS ! hard atom density ! !-------------------! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_new(xc_fun_section, rho_set_h, deriv_set, 1, needs, weight, & + CALL vxc_of_r_new(xc_fun_section, rho_set_h, deriv_set, 1, needs, weight_h, & lsd, na, nr, exc_h, vxc_h, vxg_h, vtau_h, energy_only=energy_only, & adiabatic_rescale_factor=my_adiabatic_rescale_factor) rho_atom%exc_h = rho_atom%exc_h + exc_h @@ -329,7 +344,7 @@ CONTAINS ! soft atom density ! !-------------------! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_new(xc_fun_section, rho_set_s, deriv_set, 1, needs, weight, & + CALL vxc_of_r_new(xc_fun_section, rho_set_s, deriv_set, 1, needs, weight_s, & lsd, na, nr, exc_s, vxc_s, vxg_s, vtau_s, energy_only=energy_only, & adiabatic_rescale_factor=my_adiabatic_rescale_factor) rho_atom%exc_s = rho_atom%exc_s + exc_s @@ -364,6 +379,9 @@ CONTAINS CALL xc_dset_release(deriv_set) CALL xc_rho_set_release(rho_set_h) CALL xc_rho_set_release(rho_set_s) + IF (accint) THEN + DEALLOCATE (weight_s) + END IF END DO ! ikind @@ -413,13 +431,13 @@ CONTAINS nr, nspins, num_pe INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: donlcc, gradient_f, lsd, nlcc, paw_atom, & - tau_f - REAL(dp) :: density_cut, exc_h, exc_s, gradient_cut, & - tau_cut + LOGICAL :: accint, donlcc, gradient_f, lsd, nlcc, & + paw_atom, tau_f + REAL(dp) :: agr, alpha, density_cut, exc_h, exc_s, & + gradient_cut, tau_cut REAL(dp), DIMENSION(1, 1, 1) :: tau_d REAL(dp), DIMENSION(1, 1, 1, 1) :: rho_d - REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight + REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight_h, weight_s REAL(dp), DIMENSION(:, :, :), POINTER :: rho_h, rho_s, tau_h, tau_s, vtau_h, & vtau_s, vxc_h, vxc_s REAL(dp), DIMENSION(:, :, :, :), POINTER :: drho_h, drho_s, vxg_h, vxg_s @@ -463,6 +481,7 @@ CONTAINS rho_atom_set=my_rho_atom_set) nlcc = has_nlcc(my_kind_set) + accint = dft_control%qs_control%gapw_control%accurate_xcint my_xc_section => section_vals_get_subs_vals(input, & "PROPERTIES%LINRES%EPR%PRINT%G_TENSOR%XC") @@ -498,7 +517,7 @@ CONTAINS exc1 = 0.0_dp ! Nullify some pointers for work-arrays - NULLIFY (rho_h, drho_h, rho_s, drho_s, weight) + NULLIFY (rho_h, drho_h, rho_s, drho_s, weight_h, weight_s) NULLIFY (vxc_h, vxc_s, vxg_h, vxg_s) NULLIFY (tau_h, tau_s) NULLIFY (vtau_h, vtau_s) @@ -525,6 +544,20 @@ CONTAINS bounds(2, 1) = na bounds(2, 2) = nr + ! set integration weights + IF (accint) THEN + weight_h => grid_atom%weight + ALLOCATE (weight_s(na, nr)) + alpha = dft_control%qs_control%gapw_control%aw(ikind) + DO ir = 1, nr + agr = 1.0_dp - EXP(-alpha*grid_atom%rad2(ir)) + weight_s(:, ir) = grid_atom%weight(:, ir)*agr + END DO + ELSE + weight_h => grid_atom%weight + weight_s => grid_atom%weight + END IF + ! create a place where to put the derivatives CALL xc_dset_create(deriv_set, local_bounds=bounds) ! create the place where to store the argument for the functionals @@ -539,7 +572,6 @@ CONTAINS CALL reallocate(rho_h, 1, na, 1, nr, 1, nspins) CALL reallocate(rho_s, 1, na, 1, nr, 1, nspins) - weight => grid_atom%weight CALL reallocate(vxc_h, 1, na, 1, nr, 1, nspins) CALL reallocate(vxc_s, 1, na, 1, nr, 1, nspins) ! @@ -625,7 +657,7 @@ CONTAINS ! hard atom density ! !-------------------! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_epr(xc_fun_section, rho_set_h, deriv_set, needs, weight, & + CALL vxc_of_r_epr(xc_fun_section, rho_set_h, deriv_set, needs, weight_h, & lsd, na, nr, exc_h, vxc_h, vxg_h, vtau_h) rho_atom%exc_h = rho_atom%exc_h + exc_h @@ -633,7 +665,7 @@ CONTAINS ! soft atom density ! !-------------------! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_epr(xc_fun_section, rho_set_s, deriv_set, needs, weight, & + CALL vxc_of_r_epr(xc_fun_section, rho_set_s, deriv_set, needs, weight_s, & lsd, na, nr, exc_s, vxc_s, vxg_s, vtau_s) rho_atom%exc_s = rho_atom%exc_s + exc_s @@ -680,6 +712,9 @@ CONTAINS CALL xc_dset_release(deriv_set) CALL xc_rho_set_release(rho_set_h) CALL xc_rho_set_release(rho_set_s) + IF (accint) THEN + DEALLOCATE (weight_s) + END IF END DO ! ikind @@ -740,19 +775,21 @@ CONTAINS INTEGER, DIMENSION(2) :: local_loop_limit INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: gradient_functional, lsd, my_do_sf, & - paw_atom, scale_rho, tau_f - REAL(KIND=dp) :: density_cut, gradient_cut, rtot, tau_cut + LOGICAL :: accint, gradient_functional, lsd, & + my_do_sf, paw_atom, scale_rho, tau_f + REAL(KIND=dp) :: agr, alpha, density_cut, gradient_cut, & + rtot, tau_cut REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), & POINTER :: vxc_h, vxc_s REAL(KIND=dp), DIMENSION(1, 1, 1) :: rtau REAL(KIND=dp), DIMENSION(1, 1, 1, 1) :: rrho - REAL(KIND=dp), DIMENSION(:, :), POINTER :: weight + REAL(KIND=dp), DIMENSION(:, :), POINTER :: weight_h, weight_s REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: rho1_h, rho1_s, rho_h, rho_s, tau1_h, & tau1_s, tau_h, tau_s REAL(KIND=dp), DIMENSION(:, :, :, :), POINTER :: drho1_h, drho1_s, drho_h, drho_s, vxg_h, & vxg_s TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set + TYPE(dft_control_type), POINTER :: dft_control TYPE(grid_atom_type), POINTER :: grid_atom TYPE(gto_basis_set_type), POINTER :: basis_1c TYPE(harmonics_atom_type), POINTER :: harmonics @@ -772,13 +809,14 @@ CONTAINS CALL timeset(routineN, handle) NULLIFY (qs_kind_set) - NULLIFY (rho_h, rho_s, drho_h, drho_s, weight) + NULLIFY (rho_h, rho_s, drho_h, drho_s, weight_h, weight_s) NULLIFY (rho1_h, rho1_s, drho1_h, drho1_s) NULLIFY (vxc_h, vxc_s, vxg_h, vxg_s) NULLIFY (tau_h, tau_s, tau1_h, tau1_s) CALL get_qs_env(qs_env=qs_env, & input=input, & + dft_control=dft_control, & qs_kind_set=qs_kind_set, & atomic_kind_set=atomic_kind_set) @@ -788,6 +826,8 @@ CONTAINS my_kind_set => qs_kind_set END IF + accint = dft_control%qs_control%gapw_control%accurate_xcint + CALL section_vals_val_get(input, "DFT%LSD", l_val=lsd) CALL section_vals_val_get(xc_section, "DENSITY_CUTOFF", & r_val=density_cut) @@ -840,6 +880,20 @@ CONTAINS nr = grid_atom%nr na = grid_atom%ng_sphere + ! set integration weights + IF (accint) THEN + weight_h => grid_atom%weight + ALLOCATE (weight_s(na, nr)) + alpha = dft_control%qs_control%gapw_control%aw(ikind) + DO ir = 1, nr + agr = 1.0_dp - EXP(-alpha*grid_atom%rad2(ir)) + weight_s(:, ir) = grid_atom%weight(:, ir)*agr + END DO + ELSE + weight_h => grid_atom%weight + weight_s => grid_atom%weight + END IF + ! Array dimension: here anly one dimensional arrays are used, ! i.e. only the first column of deriv_data is read. ! The other to dimensions are set to size equal 1. @@ -877,8 +931,6 @@ CONTAINS vxc_h = 0.0_dp vxc_s = 0.0_dp - weight => grid_atom%weight - IF (gradient_functional) THEN ALLOCATE (drho_h(1:4, 1:na, 1:nr, 1:nspins), drho1_h(1:4, 1:na, 1:nr, 1:nspins), & drho_s(1:4, 1:na, 1:nr, 1:nspins), drho1_s(1:4, 1:na, 1:nr, 1:nspins)) @@ -970,12 +1022,12 @@ CONTAINS CALL xc_2nd_deriv_of_r(xc_section=xc_section, & rho_set=rho_set_h, rho1_set=rho1_set_h, & deriv_set=deriv_set, & - w=weight, vxc=vxc_h, vxg=vxg_h, do_triplet=do_triplet, & + w=weight_h, vxc=vxc_h, vxg=vxg_h, do_triplet=do_triplet, & do_sf=my_do_sf) CALL xc_2nd_deriv_of_r(xc_section=xc_section, & rho_set=rho_set_s, rho1_set=rho1_set_s, & deriv_set=deriv_set, & - w=weight, vxc=vxc_s, vxg=vxg_s, do_triplet=do_triplet, & + w=weight_s, vxc=vxc_s, vxg=vxg_s, do_triplet=do_triplet, & do_sf=my_do_sf) CALL get_rho_atom(rho_atom=rho1_atom, ga_Vlocal_gb_h=int_hh, ga_Vlocal_gb_s=int_ss) @@ -992,7 +1044,6 @@ CONTAINS END DO ! some cleanup - NULLIFY (weight) DEALLOCATE (rho_h, rho_s, rho1_h, rho1_s, vxc_h, vxc_s) DEALLOCATE (drho_h, drho_s, vxg_h, vxg_s) DEALLOCATE (drho1_h, drho1_s) @@ -1002,6 +1053,9 @@ CONTAINS CALL xc_rho_set_release(rho1_set_h) CALL xc_rho_set_release(rho_set_s) CALL xc_rho_set_release(rho1_set_s) + IF (accint) THEN + DEALLOCATE (weight_s) + END IF END DO @@ -1039,13 +1093,14 @@ CONTAINS nr, ns, nspins, nstep, num_pe INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: donlcc, gradient_f, lsd, nlcc, paw_atom, & - tau_f - REAL(dp) :: beta, density_cut, exc_h, exc_s, & - gradient_cut, oeps1, oeps2, tau_cut + LOGICAL :: accint, donlcc, gradient_f, lsd, nlcc, & + paw_atom, tau_f + REAL(dp) :: agr, alpha, beta, density_cut, exc_h, & + exc_s, gradient_cut, oeps1, oeps2, & + tau_cut REAL(dp), DIMENSION(1, 1, 1) :: tau_d REAL(dp), DIMENSION(1, 1, 1, 1) :: rho_d - REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight + REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight_h, weight_s REAL(dp), DIMENSION(:, :, :), POINTER :: rho0_h, rho0_s, rho1_h, rho1_s, rho_h, & rho_s, tau0_h, tau0_s, tau1_h, tau1_s, & tau_h, tau_s, vtau_h, vtau_s, vxc_h, & @@ -1099,6 +1154,8 @@ CONTAINS xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL") CALL section_vals_val_get(xc_fun_section, "_SECTION_PARAMETERS_", i_val=myfun) + accint = dft_control%qs_control%gapw_control%accurate_xcint + IF (myfun == xc_none) THEN ! no action needed? ELSE @@ -1131,6 +1188,20 @@ CONTAINS nr = grid_atom%nr na = grid_atom%ng_sphere + ! set integration weights + IF (accint) THEN + weight_h => grid_atom%weight + ALLOCATE (weight_s(na, nr)) + alpha = dft_control%qs_control%gapw_control%aw(ikind) + DO ir = 1, nr + agr = 1.0_dp - EXP(-alpha*grid_atom%rad2(ikind)) + weight_s(:, ir) = grid_atom%weight(:, ir)*agr + END DO + ELSE + weight_h => grid_atom%weight + weight_s => grid_atom%weight + END IF + ! Prepare the structures needed to calculate and store the xc derivatives ! Array dimension: here anly one dimensional arrays are used, @@ -1152,8 +1223,6 @@ CONTAINS CALL xc_rho_set_atom_update(rho_set_h, needs, mspins, bounds) CALL xc_rho_set_atom_update(rho_set_s, needs, mspins, bounds) - weight => grid_atom%weight - ALLOCATE (rho_h(na, nr, mspins), rho_s(na, nr, mspins), & rho0_h(na, nr, nspins), rho0_s(na, nr, nspins), & rho1_h(na, nr, nspins), rho1_s(na, nr, nspins)) @@ -1320,7 +1389,7 @@ CONTAINS ! hard atom density ! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_new(xc_fun_section, rho_set_h, deriv_set, 1, needs, weight, & + CALL vxc_of_r_new(xc_fun_section, rho_set_h, deriv_set, 1, needs, weight_h, & lsd, na, nr, exc_h, vxc_h, vxg_h, vtau_h) IF (is_triplet) THEN vxc_h(:, :, 1) = vxc_h(:, :, 1) - vxc_h(:, :, 2) @@ -1333,7 +1402,7 @@ CONTAINS END IF ! soft atom density ! CALL xc_dset_zero_all(deriv_set) - CALL vxc_of_r_new(xc_fun_section, rho_set_s, deriv_set, 1, needs, weight, & + CALL vxc_of_r_new(xc_fun_section, rho_set_s, deriv_set, 1, needs, weight_s, & lsd, na, nr, exc_s, vxc_s, vxg_s, vtau_s) IF (is_triplet) THEN vxc_s(:, :, 1) = vxc_s(:, :, 1) - vxc_s(:, :, 2) @@ -1399,6 +1468,9 @@ CONTAINS DEALLOCATE (tau_h, tau_s, tau0_h, tau0_s, tau1_h, tau1_s) DEALLOCATE (vtau_h, vtau_s) END IF + IF (accint) THEN + DEALLOCATE (weight_s) + END IF END DO ! ikind @@ -1439,14 +1511,14 @@ CONTAINS nr, ns, nspins, nstep, num_pe INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: donlcc, gradient_f, lsd, nlcc, paw_atom, & - tau_f - REAL(dp) :: beta, density_cut, gradient_cut, oeps1, & - tau_cut + LOGICAL :: accint, donlcc, gradient_f, lsd, nlcc, & + paw_atom, tau_f + REAL(dp) :: agr, alpha, beta, density_cut, & + gradient_cut, oeps1, tau_cut REAL(dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: vxc_h, vxc_s REAL(dp), DIMENSION(1, 1, 1) :: tau_d REAL(dp), DIMENSION(1, 1, 1, 1) :: rho_d - REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight + REAL(dp), DIMENSION(:, :), POINTER :: rho_nlcc, weight_h, weight_s REAL(dp), DIMENSION(:, :, :), POINTER :: rho0_h, rho0_s, rho1_h, rho1_s, rho_h, & rho_s, tau0_h, tau0_s, tau1_h, tau1_s, & tau_h, tau_s, vtau_h, vtau_s @@ -1494,6 +1566,8 @@ CONTAINS xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL") CALL section_vals_val_get(xc_fun_section, "_SECTION_PARAMETERS_", i_val=myfun) + accint = dft_control%qs_control%gapw_control%accurate_xcint + IF (myfun == xc_none) THEN ! no action needed? ELSE @@ -1530,6 +1604,20 @@ CONTAINS nr = grid_atom%nr na = grid_atom%ng_sphere + ! set integration weights + IF (accint) THEN + weight_h => grid_atom%weight + ALLOCATE (weight_s(na, nr)) + alpha = dft_control%qs_control%gapw_control%aw(ikind) + DO ir = 1, nr + agr = 1.0_dp - EXP(-alpha*grid_atom%rad2(ir)) + weight_s(:, ir) = grid_atom%weight(:, ir)*agr + END DO + ELSE + weight_h => grid_atom%weight + weight_s => grid_atom%weight + END IF + ! Prepare the structures needed to calculate and store the xc derivatives ! Array dimension: here anly one dimensional arrays are used, @@ -1557,8 +1645,6 @@ CONTAINS CALL xc_rho_set_atom_update(rho1_set_h, needs, mspins, bounds) CALL xc_rho_set_atom_update(rho1_set_s, needs, mspins, bounds) - weight => grid_atom%weight - ALLOCATE (rho_h(na, nr, nspins), rho_s(na, nr, nspins), & rho0_h(na, nr, nspins), rho0_s(na, nr, nspins), & rho1_h(na, nr, nspins), rho1_s(na, nr, nspins)) @@ -1717,13 +1803,13 @@ CONTAINS CALL xc_2nd_deriv_of_r(xc_section=xc_section, & rho_set=rho_set_h, rho1_set=rho1_set_h, & deriv_set=deriv_set, & - w=weight, vxc=vxc_h, vxg=vxg_h, do_triplet=is_triplet) + w=weight_h, vxc=vxc_h, vxg=vxg_h, do_triplet=is_triplet) ! soft atom density ! CALL xc_dset_zero_all(deriv_set) CALL xc_2nd_deriv_of_r(xc_section=xc_section, & rho_set=rho_set_s, rho1_set=rho1_set_s, & deriv_set=deriv_set, & - w=weight, vxc=vxc_s, vxg=vxg_s, do_triplet=is_triplet) + w=weight_s, vxc=vxc_s, vxg=vxg_s, do_triplet=is_triplet) ! potentials DO ns = 1, nspins fint_hh(ns)%r_coef(:, :) = 0.0_dp @@ -1774,6 +1860,9 @@ CONTAINS DEALLOCATE (tau_h, tau_s, tau0_h, tau0_s, tau1_h, tau1_s) DEALLOCATE (vtau_h, vtau_s) END IF + IF (accint) THEN + DEALLOCATE (weight_s) + END IF END DO ! ikind diff --git a/src/response_solver.F b/src/response_solver.F index a76a8550cc..da118e96e8 100644 --- a/src/response_solver.F +++ b/src/response_solver.F @@ -15,6 +15,7 @@ !> \author JGH ! ************************************************************************************************** MODULE response_solver + USE accint_weights_forces, ONLY: accint_weight_force USE admm_methods, ONLY: admm_projection_derivative USE admm_types, ONLY: admm_type,& get_admm_env @@ -136,7 +137,9 @@ MODULE response_solver USE qs_rho0_methods, ONLY: init_rho0 USE qs_rho_atom_methods, ONLY: allocate_rho_atom_internals,& calculate_rho_atom_coeff - USE qs_rho_types, ONLY: qs_rho_get,& + USE qs_rho_types, ONLY: qs_rho_create,& + qs_rho_get,& + qs_rho_set,& qs_rho_type USE qs_vxc_atom, ONLY: calculate_vxc_atom,& calculate_xc_2nd_deriv_atom @@ -904,7 +907,7 @@ CONTAINS TYPE(qs_force_type), DIMENSION(:), POINTER :: force TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set TYPE(qs_ks_env_type), POINTER :: ks_env - TYPE(qs_rho_type), POINTER :: rho, rho_aux_fit, rho_xc + TYPE(qs_rho_type), POINTER :: rho, rho0, rho1, rho_aux_fit, rho_xc TYPE(section_vals_type), POINTER :: hfx_section, xc_fun_section, xc_section TYPE(task_list_type), POINTER :: task_list, task_list_aux_fit TYPE(virial_type), POINTER :: virial @@ -1291,16 +1294,16 @@ CONTAINS END IF CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace_gs) IF (ASSOCIATED(rho_r_gs)) THEN - DO ispin = 1, nspins - CALL auxbas_pw_pool%give_back_pw(rho_r_gs(ispin)) - END DO - DEALLOCATE (rho_r_gs) + DO ispin = 1, nspins + CALL auxbas_pw_pool%give_back_pw(rho_r_gs(ispin)) + END DO + DEALLOCATE (rho_r_gs) END IF IF (ASSOCIATED(rho_g_gs)) THEN - DO ispin = 1, nspins - CALL auxbas_pw_pool%give_back_pw(rho_g_gs(ispin)) - END DO - DEALLOCATE (rho_g_gs) + DO ispin = 1, nspins + CALL auxbas_pw_pool%give_back_pw(rho_g_gs(ispin)) + END DO + DEALLOCATE (rho_g_gs) END IF END IF !gapw @@ -1439,6 +1442,40 @@ CONTAINS END DO END IF + IF (gapw_xc) THEN + CALL get_qs_env(qs_env=qs_env, rho_xc=rho_xc) + ELSE + CALL get_qs_env(qs_env=qs_env, rho=rho) + END IF + + IF (dft_control%qs_control%gapw_control%accurate_xcint) THEN + ! GAPW Accurate integration + IF (debug_forces) fodeb(1:3) = force(1)%rho_elec(1:3, 1) + IF (debug_stress .AND. use_virial) stdeb = virial%pv_virial + ALLOCATE (rho1) + CALL qs_rho_create(rho1) + IF (gapw_xc) THEN + CALL get_qs_env(qs_env=qs_env, rho_xc=rho0) + CALL qs_rho_set(rho1, rho_r=rhoz_r_xc, rho_g=rhoz_g_xc) + ELSE + CALL get_qs_env(qs_env=qs_env, rho=rho0) + CALL qs_rho_set(rho1, rho_r=rhoz_r, rho_g=rhoz_g) + END IF + CALL accint_weight_force(qs_env, rho0, rho1, 1, xc_section) + DEALLOCATE (rho1) + IF (debug_forces) THEN + fodeb(1:3) = force(1)%rho_elec(1:3, 1) - fodeb(1:3) + CALL para_env%sum(fodeb) + IF (iounit > 0) WRITE (iounit, "(T3,A,T33,3F16.8)") "DEBUG:: Pz*Vxc*dw ", fodeb + END IF + IF (debug_stress .AND. use_virial) THEN + stdeb = fconv*(virial%pv_virial - stdeb) + CALL para_env%sum(stdeb) + IF (iounit > 0) WRITE (UNIT=iounit, FMT="(T2,A,T41,2(1X,ES19.11))") & + 'STRESS| INT Pz*dVxc*dw ', one_third_sum_diag(stdeb), det_3x3(stdeb) + END IF + END IF + ! Stress-tensor contribution second derivative ! Volume : int v_H[n^z]*n_in ! Volume : int epsilon_xc*n_z @@ -2090,6 +2127,31 @@ CONTAINS IF (use_virial) THEN virial%pv_ehartree = virial%pv_ehartree + (virial%pv_virial - pv_loc) END IF + ! GAPW ADMM XC correction integrate weight contribution to force + IF (admm_env%do_gapw) THEN + IF (debug_forces) fodeb(1:3) = force(1)%rho_elec(1:3, 1) + IF (debug_stress .AND. use_virial) stdeb = virial%pv_virial + + ALLOCATE (rho1) + CALL qs_rho_create(rho1) + CALL qs_rho_set(rho1, rho_r=rhoz_r_aux, rho_g=rhoz_g_aux) + ! + CALL accint_weight_force(qs_env, rho_aux_fit, rho1, 1, xc_section) + ! + DEALLOCATE (rho1) + IF (debug_forces) THEN + fodeb(1:3) = force(1)%rho_elec(1:3, 1) - fodeb(1:3) + CALL para_env%sum(fodeb) + IF (iounit > 0) WRITE (iounit, "(T3,A,T33,3F16.8)") "DEBUG:: dKxc*rhoz_admm*dw ", fodeb + END IF + IF (debug_stress .AND. use_virial) THEN + stdeb = fconv*(virial%pv_virial - stdeb) + CALL para_env%sum(stdeb) + IF (iounit > 0) WRITE (UNIT=iounit, FMT="(T2,A,T41,2(1X,ES19.11))") & + 'STRESS| dKxc*rhoz_admm*dw', one_third_sum_diag(stdeb), det_3x3(stdeb) + END IF + END IF + ! return ADMM response densities and potentials DO ispin = 1, nspins CALL auxbas_pw_pool%give_back_pw(v_xc(ispin)) CALL auxbas_pw_pool%give_back_pw(rhoz_r_aux(ispin)) diff --git a/src/xc/xc.F b/src/xc/xc.F index 8cf2560791..1ea7edc8a3 100644 --- a/src/xc/xc.F +++ b/src/xc/xc.F @@ -37,10 +37,12 @@ MODULE xc pw_grid_type USE pw_methods, ONLY: pw_axpy, & pw_copy, & + pw_copy_to_array, & pw_derive, & + pw_multiply_with, & pw_scale, & pw_transfer, & - pw_zero, pw_integrate_function + pw_zero, pw_integrate_function, pw_integral_ab USE pw_pool_types, ONLY: & pw_pool_type USE pw_types, ONLY: & @@ -58,8 +60,6 @@ MODULE xc xc_derivative_type USE xc_derivatives, ONLY: xc_functionals_eval, & xc_functionals_get_needs - USE xc_input_constants, ONLY: & - xc_debug_new_routine, xc_default_f_routine, xc_test_lsd_f_routine USE xc_rho_cflags_types, ONLY: xc_rho_cflags_type USE xc_rho_set_types, ONLY: xc_rho_set_create, & xc_rho_set_get, & @@ -71,7 +71,7 @@ MODULE xc IMPLICIT NONE PRIVATE - PUBLIC :: xc_vxc_pw_create1, xc_vxc_pw_create, & + PUBLIC :: xc_vxc_pw_create, xc_exc_pw_create, & xc_exc_calc, xc_calc_2nd_deriv_analytical, xc_calc_2nd_deriv_numerical, xc_calc_3rd_deriv_analytical, & xc_calc_2nd_deriv, xc_prep_2nd_deriv, xc_prep_3rd_deriv, divide_by_norm_drho, smooth_cutoff, & xc_uses_kinetic_energy_density, xc_uses_norm_drho @@ -122,696 +122,6 @@ CONTAINS END FUNCTION xc_uses_norm_drho -! ************************************************************************************************** -!> \brief Exchange and Correlation functional calculations. -!> depending on the selected functional_routine calls -!> the correct routine -!> \param vxc_rho will contain the v_xc part that depend on rho -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param vxc_tau will contain the kinetic tau part of v_xcthe functional -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param rho_r the value of the density in the real space -!> \param rho_g value of the density in the g space (needs to be associated -!> only for gradient corrections) -!> \param tau value of the kinetic density tau on the grid (can be null, -!> used only with meta functionals) -!> \param exc the xc energy -!> \param xc_section parameters selecting the xc and the method used to -!> calculate it -!> \param pw_pool the pool for the grids -!> \param compute_virial should the virial be computed... if so virial_xc must be present -!> \param virial_xc for calculating the GGA part of the stress -!> \param exc_r ... -!> \author fawzi -! ************************************************************************************************** - SUBROUTINE xc_vxc_pw_create1(vxc_rho, vxc_tau, rho_r, rho_g, tau, exc, xc_section, & - pw_pool, compute_virial, virial_xc, exc_r) - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho, vxc_tau - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g - REAL(KIND=dp), INTENT(out) :: exc - TYPE(section_vals_type), POINTER :: xc_section - TYPE(pw_pool_type), POINTER :: pw_pool - LOGICAL, INTENT(IN) :: compute_virial - REAL(KIND=dp), DIMENSION(3, 3), INTENT(OUT) :: virial_xc - TYPE(pw_r3d_rs_type), INTENT(INOUT), OPTIONAL :: exc_r - - INTEGER :: f_routine - - CPASSERT(ASSOCIATED(rho_r)) - CPASSERT(ASSOCIATED(xc_section)) - CPASSERT(.NOT. ASSOCIATED(vxc_rho)) - CPASSERT(.NOT. ASSOCIATED(vxc_tau)) - - virial_xc = 0.0_dp - - CALL section_vals_val_get(xc_section, "FUNCTIONAL_ROUTINE", & - i_val=f_routine) - SELECT CASE (f_routine) - CASE (xc_default_f_routine) - CALL xc_vxc_pw_create(vxc_rho=vxc_rho, vxc_tau=vxc_tau, tau=tau, exc_r=exc_r, & - rho_r=rho_r, rho_g=rho_g, exc=exc, xc_section=xc_section, & - pw_pool=pw_pool, compute_virial=compute_virial, virial_xc=virial_xc) - CASE (xc_debug_new_routine) - CPASSERT(.NOT. PRESENT(exc_r)) - CALL xc_vxc_pw_create_debug(vxc_rho=vxc_rho, vxc_tau=vxc_tau, tau=tau, & - rho_r=rho_r, rho_g=rho_g, exc=exc, xc_section=xc_section, & - pw_pool=pw_pool) - CASE (xc_test_lsd_f_routine) - CPASSERT(.NOT. PRESENT(exc_r)) - CALL xc_vxc_pw_create_test_lsd(vxc_rho=vxc_rho, vxc_tau=vxc_tau, & - tau=tau, rho_r=rho_r, rho_g=rho_g, exc=exc, & - xc_section=xc_section, pw_pool=pw_pool) - CASE default - END SELECT - - END SUBROUTINE xc_vxc_pw_create1 - -! ************************************************************************************************** -!> \brief calculates vxc using lsd with rhoa=rhob=0.5*rho and compares -!> with the lda result -!> \param vxc_rho will contain the v_xc part that depend on rho -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param vxc_tau will contain the kinetic tau part of v_xc -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param rho_r the value of the density in the real space -!> \param rho_g value of the density in the g space (needs to be associated -!> only for gradient corrections) -!> \param tau value of the kinetic density tau on the grid (can be null, -!> used only with meta functionals) -!> \param exc the xc energy -!> \param xc_section which functional to calculate, and how -!> \param pw_pool the pool for the grids -!> \author Fawzi Mohamed -!> \note -!> for debugging only: leaks, and non parallel -! ************************************************************************************************** - SUBROUTINE xc_vxc_pw_create_test_lsd(vxc_rho, vxc_tau, rho_r, rho_g, tau, & - exc, xc_section, pw_pool) - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho, vxc_tau - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g - REAL(KIND=dp), INTENT(out) :: exc - TYPE(section_vals_type), POINTER :: xc_section - TYPE(pw_pool_type), POINTER :: pw_pool - - LOGICAL, PARAMETER :: compute_virial = .FALSE. - - CHARACTER(len=default_path_length) :: filename - INTEGER, DIMENSION(:), POINTER :: split_desc - INTEGER :: i, ii, ispin, j, k, order - INTEGER, DIMENSION(2, 3) :: bo - REAL(kind=dp) :: diff, exc2, maxdiff, tmp - REAL(KIND=dp), DIMENSION(3, 3) :: virial_xc - REAL(kind=dp), DIMENSION(:, :, :), POINTER :: pot, pot2, pot3 - TYPE(cp_sll_xc_deriv_type), POINTER :: deriv_iter - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho2, vxc_tau2 - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho2_g - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho2_r, tau2 - TYPE(xc_derivative_set_type) :: dSet1, dSet2 - TYPE(xc_derivative_type), POINTER :: deriv, deriv2, deriv3 - TYPE(xc_rho_set_type) :: rho_set1, rho_set2 - - NULLIFY (vxc_rho2, vxc_tau2, tau2, pot, pot3, pot3, & - deriv, deriv2, deriv3, rho2_g) - - bo = rho_r(1)%pw_grid%bounds_local - - ALLOCATE (rho2_r(2)) - DO ispin = 1, 2 - CALL pw_pool%create_pw(rho2_r(ispin)) - END DO - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - tmp = rho_r(1)%array(i, j, k)*0.5 - rho2_r(1)%array(i, j, k) = tmp - rho2_r(2)%array(i, j, k) = tmp - END DO - END DO - END DO - - IF (ASSOCIATED(tau)) THEN - ALLOCATE (tau2(2)) - DO ispin = 1, 2 - CALL pw_pool%create_pw(tau2(ispin)) - END DO - - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - tmp = tau(1)%array(i, j, k)*0.5 - tau2(1)%array(i, j, k) = tmp - tau2(2)%array(i, j, k) = tmp - END DO - END DO - END DO - END IF - - PRINT *, "about to calculate xc (lda)" - CALL xc_rho_set_and_dset_create(rho_r=rho_r, rho_g=rho_g, & - tau=tau, xc_section=xc_section, & - pw_pool=pw_pool, rho_set=rho_set1, & - deriv_set=dSet1, deriv_order=1, & - calc_potential=.FALSE.) - CALL xc_vxc_pw_create(rho_r=rho_r, rho_g=rho_g, tau=tau, & - vxc_rho=vxc_rho, vxc_tau=vxc_tau, exc=exc, xc_section=xc_section, & - pw_pool=pw_pool, & - compute_virial=compute_virial, virial_xc=virial_xc) - PRINT *, "did calculate xc (lda)" - PRINT *, "about to calculate xc (lsd)" - CALL xc_rho_set_and_dset_create(rho_set=rho_set2, deriv_set=dSet2, & - rho_r=rho2_r, rho_g=rho2_g, tau=tau2, xc_section=xc_section, & - pw_pool=pw_pool, deriv_order=1, & - calc_potential=.FALSE.) - CALL xc_vxc_pw_create(rho_r=rho2_r, rho_g=rho2_g, tau=tau2, & - vxc_rho=vxc_rho2, vxc_tau=vxc_tau2, exc=exc2, xc_section=xc_section, & - pw_pool=pw_pool, compute_virial=compute_virial, virial_xc=virial_xc) - PRINT *, "did calculate xc (new)" - PRINT *, "at (0,0,0) rho_r=", rho_r(1)%array(0, 0, 0), & - "rho2_r(1)=", rho2_r(1)%array(0, 0, 0), & - "rho2_r(2)=", rho2_r(2)%array(0, 0, 0), & - "rho_r_sm=", rho_set1%rho(0, 0, 0), "rhoa2_r_sm=", rho_set2%rhoa(0, 0, 0), & - "rhob2_r_sm=", rho_set2%rhob(0, 0, 0) - OPEN (unit=120, file="rho.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%rho - WRITE (unit=120) pot(bo(1, 1):bo(2, 1), bo(1, 2):bo(2, 2), bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="rhoa.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%rhoa - WRITE (unit=120) pot(bo(1, 1):bo(2, 1), bo(1, 2):bo(2, 2), bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="rhob.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%rhob - WRITE (unit=120) pot(bo(1, 1):bo(2, 1), bo(1, 2):bo(2, 2), bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="ndrho.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%norm_drho - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="ndrhoa.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%norm_drhoa - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="ndrhob.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%norm_drhob - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - IF (rho_set1%has%tau) THEN - OPEN (unit=120, file="tau.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%tau - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END IF - IF (rho_set2%has%tau_spin) THEN - OPEN (unit=120, file="tau_a.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%tau_a - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="tau_v.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set2%tau_b - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END IF - OPEN (unit=120, file="vxc.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_rho(1)%array - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="vxc2.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_rho2(1)%array - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - IF (ASSOCIATED(vxc_tau)) THEN - OPEN (unit=120, file="vxc_tau.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_tau(1)%array - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END IF - IF (ASSOCIATED(vxc_tau2)) THEN - OPEN (unit=120, file="vxc_tau2_a.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_tau2(1)%array - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - OPEN (unit=120, file="vxc_tau2_b.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_tau2(2)%array - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END IF - - PRINT *, "calc diff on vxc" - maxDiff = 0.0_dp - DO ispin = 1, 1 - ii = 0 - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - ii = ii + 1 - diff = ABS(vxc_rho(ispin)%array(i, j, k) - & - vxc_rho2(ispin)%array(i, j, k)) - IF (ii == 1) THEN - PRINT *, "vxc", ispin, "=", vxc_rho(ispin)%array(i, j, k), & - "vs", vxc_rho2(ispin)%array(i, j, k), "diff=", diff - END IF - IF (maxDiff < diff) THEN - maxDiff = diff - PRINT *, "diff=", diff, " at ", i, ",", j, ",", k, & - " spin=", ispin, "rho=", rho_set1%rho(i, j, k), & - " ndrho=", rho_set1%norm_drho(i, j, k) - END IF - END DO - END DO - END DO - END DO - PRINT *, "diff exc=", ABS(exc - exc2), "diff vxc=", maxdiff - ! CPASSERT(maxdiff<5.e-11) - ! CPASSERT(ABS(exc-exc2)<1.e-14) - - IF (ASSOCIATED(vxc_tau)) THEN - PRINT *, "calc diff on vxc_tau" - maxDiff = 0.0_dp - DO ispin = 1, 1 - ii = 0 - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - ii = ii + 1 - diff = ABS(vxc_tau(ispin)%array(i, j, k) - & - vxc_tau2(ispin)%array(i, j, k)) - IF (ii == 1) THEN - PRINT *, "vxc_tau", ispin, "=", vxc_tau(ispin)%array(i, j, k), & - "vs", vxc_tau2(ispin)%array(i, j, k), "diff=", diff - END IF - IF (maxDiff < diff) THEN - maxDiff = diff - PRINT *, "diff=", diff, " at ", i, ",", j, ",", k, & - " spin=", ispin, "rho=", rho_set1%rho(i, j, k), & - " ndrho=", rho_set1%norm_drho(i, j, k) - END IF - END DO - END DO - END DO - END DO - PRINT *, "diff exc=", ABS(exc - exc2), "diff vxc_tau=", maxdiff - END IF - deriv_iter => dSet1%derivs - DO WHILE (cp_sll_xc_deriv_next(deriv_iter, el_att=deriv)) - CALL xc_derivative_get(deriv, order=order, & - split_desc=split_desc, deriv_data=pot) - SELECT CASE (order) - CASE (0) - filename = "e_0.bindata" - deriv2 => xc_dset_get_derivative(dSet2, [INTEGER::]) - CASE (1) - filename = "e_"//TRIM(id_to_desc(split_desc(1)))//".bindata" - IF (split_desc(1) == deriv_rho) THEN - deriv2 => xc_dset_get_derivative(dSet2, [deriv_rhoa]) - ELSEIF (split_desc(1) == deriv_tau) THEN - deriv2 => xc_dset_get_derivative(dSet2, [deriv_tau_a]) - ELSEIF (split_desc(1) == deriv_norm_drho) THEN - deriv2 => xc_dset_get_derivative(dSet2, [deriv_norm_drhoa]) - deriv3 => xc_dset_get_derivative(dSet2, [deriv_norm_drho]) - IF (ASSOCIATED(deriv3)) THEN - IF (ASSOCIATED(deriv2)) THEN - CALL xc_derivative_get(deriv2, & - deriv_data=pot2) - CALL xc_derivative_get(deriv3, & - deriv_data=pot3) - pot2 = pot2 + pot3 - ELSE - deriv2 => deriv3 - END IF - NULLIFY (deriv3, pot2, pot3) - END IF - ELSE - CPABORT("Unknown derivative variable") - END IF - CASE default - CPABORT("Unsupported derivative order") - END SELECT - CALL xc_derivative_get(deriv2, & - deriv_data=pot2) - PRINT *, "checking ", filename - maxDiff = 0.0_dp - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - diff = ABS(pot(i, j, k) - pot2(i, j, k)) - IF (maxDiff < diff) THEN - maxDiff = diff - PRINT *, "ediff(", i, j, k, ")=", maxDiff, & - "rho=", rho_set1%rho(i, j, k), & - "ndrho=", rho_set1%norm_drho(i, j, k) - END IF - END DO - END DO - END DO - PRINT *, "maxdiff ", filename, "=", maxDiff - OPEN (unit=120, file=TRIM(filename), status="unknown", & - access='sequential', & - form="unformatted") - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END DO - deriv_iter => dSet2%derivs - DO WHILE (cp_sll_xc_deriv_next(deriv_iter, el_att=deriv)) - CALL xc_derivative_get(deriv, order=order, & - split_desc=split_desc, deriv_data=pot) - SELECT CASE (order) - CASE (0) - filename = "e_0-2.bindata" - CASE (1) - filename = "e_"//TRIM(id_to_desc(split_desc(1)))//"-2.bindata" - CASE default - CPABORT("Unsupported derivative order") - END SELECT - OPEN (unit=120, file=TRIM(filename), status="unknown", & - access='sequential', & - form="unformatted") - WRITE (unit=120) pot(:, :, bo(2, 3)) - CLOSE (unit=120) - END DO - CALL xc_rho_set_release(rho_set1) - CALL xc_rho_set_release(rho_set2) - CALL xc_dset_release(dSet2) - CALL xc_dset_release(dSet1) - DO ispin = 1, 2 - CALL pw_pool%give_back_pw(rho2_r(ispin)) - CALL pw_pool%give_back_pw(vxc_rho2(ispin)) - IF (ASSOCIATED(vxc_tau2)) THEN - CALL pw_pool%give_back_pw(vxc_tau2(ispin)) - END IF - END DO - DEALLOCATE (vxc_rho2, rho2_r, rho2_g) - IF (ASSOCIATED(vxc_tau2)) THEN - DEALLOCATE (vxc_tau2) - END IF - - END SUBROUTINE xc_vxc_pw_create_test_lsd - -! ************************************************************************************************** -!> \brief calculates vxc outputting the yz plane of rho, and of the various components -!> of the the derivatives and of vxc -!> \param vxc_rho will contain the v_xc part that depend on rho -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param vxc_tau will contain the kinetic tau part of v_xc -!> (if one of the chosen xc functionals has it it is allocated and you -!> are responsible for it) -!> \param rho_r the value of the density in the real space -!> \param rho_g value of the density in the g space (needs to be associated -!> only for gradient corrections) -!> \param tau value of the kinetic density tau on the grid (can be null, -!> used only with meta functionals) -!> \param exc the xc energy -!> \param xc_section which functional should be used, and how to do it -!> \param pw_pool the pool for the grids -!> \author Fawzi Mohamed -!> \note -!> for debugging only. -! ************************************************************************************************** - SUBROUTINE xc_vxc_pw_create_debug(vxc_rho, vxc_tau, rho_r, rho_g, tau, exc, & - xc_section, pw_pool) - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho, vxc_tau - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g - REAL(KIND=dp), INTENT(out) :: exc - TYPE(section_vals_type), POINTER :: xc_section - TYPE(pw_pool_type), POINTER :: pw_pool - - LOGICAL, PARAMETER :: compute_virial = .FALSE. - - CHARACTER(len=default_path_length) :: filename - INTEGER, DIMENSION(:), POINTER :: split_desc - INTEGER :: i, ispin, j, k, order - INTEGER, DIMENSION(2, 3) :: bo - REAL(KIND=dp), DIMENSION(3, 3) :: virial_xc - REAL(kind=dp), DIMENSION(:, :, :), POINTER :: pot - TYPE(cp_logger_type), POINTER :: logger - TYPE(cp_sll_xc_deriv_type), POINTER :: deriv_iter - TYPE(xc_derivative_set_type) :: dSet1 - TYPE(xc_derivative_type), POINTER :: deriv - TYPE(xc_rho_set_type) :: rho_set1 - - NULLIFY (pot, deriv) - logger => cp_get_default_logger() - - bo = rho_r(1)%pw_grid%bounds_local - - CALL xc_rho_set_and_dset_create(rho_r=rho_r, rho_g=rho_g, & - tau=tau, xc_section=xc_section, & - pw_pool=pw_pool, rho_set=rho_set1, & - deriv_set=dSet1, deriv_order=1, & - calc_potential=.FALSE.) - - ! outputs 0,:,: plane - IF (bo(1, 1) <= 0 .AND. 0 <= bo(2, 1)) THEN - IF (rho_set1%has%rho_spin) THEN - OPEN (unit=120, file="rhoa.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%rhoa - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - OPEN (unit=120, file="rhob.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%rhob - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - IF (rho_set1%has%norm_drho) THEN - OPEN (unit=120, file="ndrho.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%norm_drho - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - IF (rho_set1%has%norm_drho_spin) THEN - OPEN (unit=120, file="ndrhoa.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%norm_drhoa - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - OPEN (unit=120, file="ndrhob.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%norm_drhob - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - IF (rho_set1%has%rho) THEN - OPEN (unit=120, file="rho.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%rho - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - IF (rho_set1%has%tau) THEN - OPEN (unit=120, file="tau.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%tau - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - IF (rho_set1%has%tau_spin) THEN - OPEN (unit=120, file="tau_a.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%tau_a - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - OPEN (unit=120, file="tau_b.bindata", status="unknown", access='sequential', & - form="unformatted", action="write") - pot => rho_set1%tau_b - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END IF - - deriv_iter => dSet1%derivs - DO WHILE (cp_sll_xc_deriv_next(deriv_iter, el_att=deriv)) - CALL xc_derivative_get(deriv, order=order, & - split_desc=split_desc, deriv_data=pot) - SELECT CASE (order) - CASE (0) - filename = "e_0.bindata" - CASE (1) - filename = "e_"//TRIM(id_to_desc(split_desc(1)))//".bindata" - CASE default - CPABORT("Unsupported derivative order") - END SELECT - OPEN (unit=120, file=TRIM(filename), status="unknown", & - access='sequential', & - form="unformatted") - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - END DO - END IF - - CALL xc_vxc_pw_create(vxc_rho=vxc_rho, vxc_tau=vxc_tau, & - rho_r=rho_r, rho_g=rho_g, tau=tau, & - exc=exc, xc_section=xc_section, & - pw_pool=pw_pool, & - compute_virial=compute_virial, virial_xc=virial_xc) - - ! outputs 0,:,: plane - IF (bo(1, 1) <= 0 .AND. 0 <= bo(2, 1)) THEN - IF (ASSOCIATED(vxc_rho)) THEN - DO ispin = 1, SIZE(vxc_rho) - WRITE (filename, "('vxc-',i1,'.bindata')") ispin - OPEN (unit=120, file=filename, status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_rho(ispin)%array - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - - pot => vxc_rho(ispin)%array - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - IF (ABS(pot(i, j, k)) > 10.0_dp) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' vxc_',i1,'(',i6,',',i6,',',i6,')=',e11.4)", & - advance="no") ispin, i, j, k, pot(i, j, k) - IF (rho_set1%has%rho_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' rho=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%rhoa(i, j, k), rho_set1%rhob(i, j, k) - ELSE IF (rho_set1%has%rho) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' rho=',e11.4)", advance="no") rho_set1%rho(i, j, k) - END IF - IF (rho_set1%has%norm_drho_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' ndrho=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%norm_drhoa(i, j, k), & - rho_set1%norm_drhob(i, j, k) - ELSE IF (rho_set1%has%norm_drho) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' ndrho=',e11.4)", advance="no") rho_set1%norm_drho(i, j, k) - END IF - IF (rho_set1%has%tau_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' tau=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%tau_a(i, j, k), & - rho_set1%tau_b(i, j, k) - ELSE IF (rho_set1%has%tau) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' tau=',e11.4)", advance="no") rho_set1%tau(i, j, k) - END IF - - deriv_iter => dSet1%derivs - DO WHILE (cp_sll_xc_deriv_next(deriv_iter, el_att=deriv)) - CALL xc_derivative_get(deriv, order=order, & - split_desc=split_desc, deriv_data=pot) - SELECT CASE (order) - CASE (0) - filename = " e_0" - CASE (1) - filename = " e_"//TRIM(id_to_desc(split_desc(1))) - CASE default - CPABORT("Unsupported derivative order") - END SELECT - WRITE (unit=cp_logger_get_default_unit_nr(logger), & - fmt="(a,'=',e11.4)", advance="no") & - TRIM(filename), pot(i, j, k) - END DO - - WRITE (cp_logger_get_default_unit_nr(logger), & - "()") - END IF - END DO - END DO - END DO - END DO - END IF - IF (ASSOCIATED(vxc_tau)) THEN - DO ispin = 1, SIZE(vxc_tau) - WRITE (filename, "('vxc_tau_',i1,'.bindata')") ispin - OPEN (unit=120, file=filename, status="unknown", access='sequential', & - form="unformatted", action="write") - pot => vxc_tau(ispin)%array - WRITE (unit=120) pot(0, :, :) - CLOSE (unit=120) - - pot => vxc_tau(ispin)%array - DO k = bo(1, 3), bo(2, 3) - DO j = bo(1, 2), bo(2, 2) - DO i = bo(1, 1), bo(2, 1) - IF (ABS(pot(i, j, k)) > 10.0_dp) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "('vxc_tau_',i1,'(',i6,',',i6,',',i6,')=',e11.4)", & - advance="no") ispin, i, j, k, pot(i, j, k) - IF (rho_set1%has%rho_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' rho=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%rhoa(i, j, k), rho_set1%rhob(i, j, k) - ELSE IF (rho_set1%has%rho) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' rho=',e11.4)", advance="no") rho_set1%rho(i, j, k) - END IF - IF (rho_set1%has%norm_drho_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' ndrho=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%norm_drhoa(i, j, k), & - rho_set1%norm_drhob(i, j, k) - ELSE IF (rho_set1%has%norm_drho) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' ndrho=',e11.4)", advance="no") rho_set1%norm_drho(i, j, k) - END IF - IF (rho_set1%has%tau_spin) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' tau=(',e11.4,',',e11.4,')')", advance="no") & - rho_set1%tau_a(i, j, k), & - rho_set1%tau_b(i, j, k) - ELSE IF (rho_set1%has%tau) THEN - WRITE (cp_logger_get_default_unit_nr(logger), & - "(' tau=',e11.4)", advance="no") rho_set1%tau(i, j, k) - END IF - - deriv_iter => dSet1%derivs - DO WHILE (cp_sll_xc_deriv_next(deriv_iter, el_att=deriv)) - CALL xc_derivative_get(deriv, order=order, & - split_desc=split_desc, deriv_data=pot) - SELECT CASE (order) - CASE (0) - filename = " e_0" - CASE (1) - filename = " e_"//TRIM(id_to_desc(split_desc(1))) - CASE default - CPABORT("Unsupported derivative order") - END SELECT - WRITE (unit=cp_logger_get_default_unit_nr(logger), & - fmt="(a,'=',e11.4)", advance="no") & - TRIM(filename), pot(i, j, k) - END DO - - WRITE (cp_logger_get_default_unit_nr(logger), "()") - END IF - END DO - END DO - END DO - END DO - END IF - END IF - - CALL xc_dset_release(dSet1) - CALL xc_rho_set_release(rho_set1) - END SUBROUTINE xc_vxc_pw_create_debug - ! ************************************************************************************************** !> \brief creates a xc_rho_set and a derivative set containing the derivatives !> of the functionals with the given deriv_order. @@ -828,6 +138,7 @@ CONTAINS !> used only with meta functionals) !> \param xc_section the section describing the functional to use !> \param pw_pool the pool for the grids +!> \param weights integration weights !> \param calc_potential if the basic components of the arguments !> should be kept in rho set (a basic component is for example drho !> when with lda a functional needs norm_drho) @@ -838,25 +149,30 @@ CONTAINS ! ************************************************************************************************** SUBROUTINE xc_rho_set_and_dset_create(rho_set, deriv_set, deriv_order, & rho_r, rho_g, tau, xc_section, pw_pool, & - calc_potential) + weights, calc_potential) TYPE(xc_rho_set_type) :: rho_set TYPE(xc_derivative_set_type) :: deriv_set INTEGER, INTENT(in) :: deriv_order - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau + TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g TYPE(section_vals_type), POINTER :: xc_section TYPE(pw_pool_type), POINTER :: pw_pool + TYPE(pw_r3d_rs_type), POINTER :: weights LOGICAL, INTENT(in) :: calc_potential CHARACTER(len=*), PARAMETER :: routineN = 'xc_rho_set_and_dset_create' INTEGER :: handle, nspins LOGICAL :: lsd + TYPE(xc_derivative_type), POINTER :: deriv_att + TYPE(cp_sll_xc_deriv_type), POINTER :: pos TYPE(section_vals_type), POINTER :: xc_fun_sections CALL timeset(routineN, handle) + MARK_USED(weights) + CPASSERT(ASSOCIATED(pw_pool)) nspins = SIZE(rho_r) @@ -888,6 +204,14 @@ CONTAINS deriv_set=deriv_set, & deriv_order=deriv_order) + ! apply weights + IF (ASSOCIATED(weights)) THEN + pos => deriv_set%derivs + DO WHILE (cp_sll_xc_deriv_next(pos, el_att=deriv_att)) + deriv_att%deriv_data(:, :, :) = weights%array(:, :, :)*deriv_att%deriv_data(:, :, :) + END DO + END IF + CALL divide_by_norm_drho(deriv_set, rho_set, lsd) CALL timestop(handle) @@ -1124,6 +448,7 @@ CONTAINS !> \param tau value of the kinetic density tau on the grid (can be null, !> used only with meta functionals) !> \param xc_section which functional to calculate, and how to do it +!> \param weights integration weights !> \param pw_pool the pool for the grids !> \param compute_virial ... !> \param virial_xc ... @@ -1141,17 +466,18 @@ CONTAINS !> Beware: some really dirty pointer handling! !> energy should be kept consistent with xc_exc_calc ! ************************************************************************************************** - SUBROUTINE xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau, xc_section, & + SUBROUTINE xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau, xc_section, weights, & pw_pool, compute_virial, virial_xc, exc_r) - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho, vxc_tau + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: vxc_rho, vxc_tau REAL(KIND=dp), INTENT(out) :: exc - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau + TYPE(pw_r3d_rs_type), POINTER :: weights + TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g TYPE(section_vals_type), POINTER :: xc_section TYPE(pw_pool_type), POINTER :: pw_pool LOGICAL :: compute_virial REAL(KIND=dp), DIMENSION(3, 3), INTENT(OUT) :: virial_xc - TYPE(pw_r3d_rs_type), INTENT(INOUT), OPTIONAL :: exc_r + TYPE(pw_r3d_rs_type), INTENT(INOUT), OPTIONAL :: exc_r CHARACTER(len=*), PARAMETER :: routineN = 'xc_vxc_pw_create' INTEGER, DIMENSION(2), PARAMETER :: norm_drho_spin_name = [deriv_norm_drhoa, deriv_norm_drhob] @@ -1169,9 +495,9 @@ CONTAINS rho, rhoa, rhob TYPE(cp_sll_xc_deriv_type), POINTER :: pos TYPE(pw_grid_type), POINTER :: pw_grid - TYPE(pw_r3d_rs_type), DIMENSION(3) :: pw_to_deriv, pw_to_deriv_rho - TYPE(pw_c1d_gs_type) :: tmp_g, vxc_g - TYPE(pw_r3d_rs_type) :: v_drho_r, virial_pw + TYPE(pw_r3d_rs_type), DIMENSION(3) :: pw_to_deriv, pw_to_deriv_rho + TYPE(pw_c1d_gs_type) :: tmp_g, vxc_g + TYPE(pw_r3d_rs_type) :: v_drho_r, virial_pw TYPE(xc_derivative_set_type) :: deriv_set TYPE(xc_derivative_type), POINTER :: deriv_att TYPE(xc_rho_set_type) :: rho_set @@ -1201,7 +527,7 @@ CONTAINS CALL xc_rho_set_and_dset_create(rho_set=rho_set, deriv_set=deriv_set, & deriv_order=1, rho_r=rho_r, rho_g=rho_g, tau=tau, & xc_section=xc_section, & - pw_pool=pw_pool, & + pw_pool=pw_pool, weights=weights, & calc_potential=.TRUE.) CALL section_vals_val_get(xc_section, "XC_GRID%XC_DERIV", & @@ -1227,7 +553,6 @@ CONTAINS IF (lsd) THEN CALL xc_dset_recover_pw(deriv_set, [deriv_rhoa], vxc_rho(1), pw_grid, pw_pool) CALL xc_dset_recover_pw(deriv_set, [deriv_rhob], vxc_rho(2), pw_grid, pw_pool) - ELSE CALL xc_dset_recover_pw(deriv_set, [deriv_rho], vxc_rho(1), pw_grid, pw_pool) END IF @@ -1351,9 +676,9 @@ CONTAINS CALL xc_pw_divergence(xc_deriv_method_id, pw_to_deriv, tmp_g, vxc_g, vxc_rho(ispin)) IF (dealloc_pw_to_deriv) THEN - DO idir = 1, 3 - CALL pw_pool%give_back_pw(pw_to_deriv(idir)) - END DO + DO idir = 1, 3 + CALL pw_pool%give_back_pw(pw_to_deriv(idir)) + END DO END IF END IF @@ -1371,7 +696,8 @@ CONTAINS CALL xc_dset_recover_pw(deriv_set, [deriv_id], pw_to_deriv(1), pw_grid) - IF (use_virial) CALL virial_laplace(rho_r(ispin), pw_pool, virial_xc, pw_to_deriv(1)%array) + IF (use_virial) CALL virial_laplace(rho_r(ispin), pw_pool, virial_xc, & + pw_to_deriv(1)%array) CALL xc_pw_laplace(pw_to_deriv(1), pw_pool, xc_deriv_method_id) @@ -1448,6 +774,7 @@ CONTAINS !> \param rho_g g-space density on the grid !> \param tau kinetic energy density on the grid !> \param xc_section XC parameters +!> \param weights Integration weights !> \param pw_pool pool of plain-wave grids !> \return the XC energy !> \par History @@ -1456,11 +783,12 @@ CONTAINS !> \note !> has to be kept consistent with xc_vxc_pw_create ! ************************************************************************************************** - FUNCTION xc_exc_calc(rho_r, rho_g, tau, xc_section, pw_pool) & + FUNCTION xc_exc_calc(rho_r, rho_g, tau, xc_section, weights, pw_pool) & RESULT(exc) - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau - TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau + TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g TYPE(section_vals_type), POINTER :: xc_section + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(pw_pool_type), POINTER :: pw_pool REAL(kind=dp) :: exc @@ -1474,6 +802,7 @@ CONTAINS TYPE(xc_rho_set_type) :: rho_set CALL timeset(routineN, handle) + NULLIFY (deriv, e_0) exc = 0.0_dp @@ -1481,7 +810,7 @@ CONTAINS CALL xc_rho_set_and_dset_create(rho_set=rho_set, & deriv_set=deriv_set, deriv_order=0, & rho_r=rho_r, rho_g=rho_g, tau=tau, xc_section=xc_section, & - pw_pool=pw_pool, & + pw_pool=pw_pool, weights=weights, & calc_potential=.FALSE.) deriv => xc_dset_get_derivative(deriv_set, [INTEGER::]) @@ -1505,9 +834,72 @@ CONTAINS CALL xc_rho_set_release(rho_set, pw_pool=pw_pool) CALL xc_dset_release(deriv_set) END IF + CALL timestop(handle) + END FUNCTION xc_exc_calc +! ************************************************************************************************** +!> \brief calculates just the exchange and correlation energy density +!> \param rho_r realspace density on the grid +!> \param rho_g g-space density on the grid +!> \param tau kinetic energy density on the grid +!> \param xc_section XC parameters +!> \param weights Integration weights +!> \param pw_pool pool of plain-wave grids +!> \param exc xc energy density +!> \author JGH +! ************************************************************************************************** + SUBROUTINE xc_exc_pw_create(rho_r, rho_g, tau, xc_section, weights, pw_pool, exc) + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, tau + TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g + TYPE(section_vals_type), POINTER :: xc_section + TYPE(pw_r3d_rs_type), POINTER :: weights + TYPE(pw_pool_type), POINTER :: pw_pool + TYPE(pw_r3d_rs_type) :: exc + + CHARACTER(len=*), PARAMETER :: routineN = 'xc_exc_pw_create' + + INTEGER :: handle + REAL(dp) :: density_smooth_cut_range, rho_cutoff + REAL(dp), DIMENSION(:, :, :), POINTER :: e_0 + TYPE(xc_derivative_set_type) :: deriv_set + TYPE(xc_derivative_type), POINTER :: deriv + TYPE(xc_rho_set_type) :: rho_set + + CALL timeset(routineN, handle) + + NULLIFY (deriv, e_0) + + CALL xc_rho_set_and_dset_create(rho_set=rho_set, & + deriv_set=deriv_set, deriv_order=0, & + rho_r=rho_r, rho_g=rho_g, tau=tau, xc_section=xc_section, & + pw_pool=pw_pool, weights=weights, & + calc_potential=.FALSE.) + deriv => xc_dset_get_derivative(deriv_set, [INTEGER::]) + + IF (ASSOCIATED(deriv)) THEN + CALL xc_derivative_get(deriv, deriv_data=e_0) + + CALL section_vals_val_get(xc_section, "DENSITY_CUTOFF", & + r_val=rho_cutoff) + CALL section_vals_val_get(xc_section, "DENSITY_SMOOTH_CUTOFF_RANGE", & + r_val=density_smooth_cut_range) + CALL smooth_cutoff(pot=e_0, rho=rho_set%rho, & + rhoa=rho_set%rhoa, rhob=rho_set%rhob, & + rho_cutoff=rho_cutoff, & + rho_smooth_cutoff_range=density_smooth_cut_range) + + exc%array = e_0 + + CALL xc_rho_set_release(rho_set, pw_pool=pw_pool) + CALL xc_dset_release(deriv_set) + END IF + + CALL timestop(handle) + + END SUBROUTINE xc_exc_pw_create + ! ************************************************************************************************** !> \brief Caller routine to calculate the second order potential in the direction of rho1_r !> \param v_xc XC potential, will be allocated, to be integrated with the KS density @@ -1527,7 +919,7 @@ CONTAINS !> \param virial_xc virial terms will be collected here ! ************************************************************************************************** SUBROUTINE xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, rho1_r, rho1_g, tau1_r, & - pw_pool, xc_section, gapw, vxg, & + pw_pool, weights, xc_section, gapw, vxg, & do_excitations, do_sf, do_triplet, & compute_virial, virial_xc) @@ -1537,6 +929,7 @@ CONTAINS TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho1_r, tau1_r TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho1_g TYPE(pw_pool_type), INTENT(IN), POINTER :: pw_pool + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(section_vals_type), INTENT(IN), POINTER :: xc_section LOGICAL, INTENT(IN) :: gapw REAL(KIND=dp), DIMENSION(:, :, :, :), OPTIONAL, & @@ -1625,8 +1018,9 @@ CONTAINS END IF CALL xc_calc_2nd_deriv_analytical(v_xc, v_xc_tau, deriv_set, rho_set, & - rho1_set, pw_pool, xc_section, gapw, vxg=vxg, spinflip=my_do_sf, & - tddfpt_fac=fac, compute_virial=compute_virial, virial_xc=virial_xc) + rho1_set, pw_pool, xc_section, & + gapw, vxg=vxg, spinflip=my_do_sf, tddfpt_fac=fac, & + compute_virial=compute_virial, virial_xc=virial_xc) CALL xc_rho_set_release(rho1_set) @@ -1634,7 +1028,7 @@ CONTAINS IF (gapw) CPABORT("Numerical 2nd derivatives not implemented with GAPW") CALL xc_calc_2nd_deriv_numerical(v_xc, v_xc_tau, rho_set, rho1_r, rho1_g, tau1_r, & - pw_pool, xc_section, & + pw_pool, weights, xc_section, & my_do_excitations .AND. my_do_triplet, & compute_virial, virial_xc, deriv_set) END IF @@ -1659,7 +1053,7 @@ CONTAINS !> \param deriv_set deriv set from xc_prep_2nd_deriv (only for virials) ! ************************************************************************************************** SUBROUTINE xc_calc_2nd_deriv_numerical(v_xc, v_tau, rho_set, rho1_r, rho1_g, tau1_r, & - pw_pool, xc_section, & + pw_pool, weights, xc_section, & do_triplet, calc_virial, virial_xc, deriv_set) TYPE(pw_r3d_rs_type), DIMENSION(:), INTENT(IN), POINTER :: v_xc, v_tau @@ -1667,6 +1061,7 @@ CONTAINS TYPE(pw_r3d_rs_type), DIMENSION(:), INTENT(IN), POINTER :: rho1_r, tau1_r TYPE(pw_c1d_gs_type), DIMENSION(:), INTENT(IN), POINTER :: rho1_g TYPE(pw_pool_type), INTENT(IN), POINTER :: pw_pool + TYPE(pw_r3d_rs_type), INTENT(IN), POINTER :: weights TYPE(section_vals_type), INTENT(IN), POINTER :: xc_section LOGICAL, INTENT(IN) :: do_triplet LOGICAL, INTENT(IN), OPTIONAL :: calc_virial @@ -1676,15 +1071,15 @@ CONTAINS CHARACTER(len=*), PARAMETER :: routineN = 'xc_calc_2nd_deriv_numerical' REAL(KIND=dp), DIMENSION(-4:4, 4), PARAMETER :: & - weights = RESHAPE([0.0_dp, 0.0_dp, 0.0_dp, -0.5_dp, 0.0_dp, 0.5_dp, 0.0_dp, 0.0_dp, 0.0_dp, & + rweights = RESHAPE([0.0_dp, 0.0_dp, 0.0_dp, -0.5_dp, 0.0_dp, 0.5_dp, 0.0_dp, 0.0_dp, 0.0_dp, & 0.0_dp, 0.0_dp, 1.0_dp/12.0_dp, -2.0_dp/3.0_dp, 0.0_dp, 2.0_dp/3.0_dp, -1.0_dp/12.0_dp, 0.0_dp, 0.0_dp, & - 0.0_dp, -1.0_dp/60.0_dp, 0.15_dp, -0.75_dp, 0.0_dp, 0.75_dp, -0.15_dp, 1.0_dp/60.0_dp, 0.0_dp, & + 0.0_dp, -1.0_dp/60.0_dp, 0.15_dp, -0.75_dp, 0.0_dp, 0.75_dp, -0.15_dp, 1.0_dp/60.0_dp, 0.0_dp, & 1.0_dp/280.0_dp, -4.0_dp/105.0_dp, 0.2_dp, -0.8_dp, 0.0_dp, 0.8_dp, -0.2_dp, 4.0_dp/105.0_dp, -1.0_dp/280.0_dp], [9, 4]) INTEGER :: handle, idir, ispin, nspins, istep, nsteps INTEGER, DIMENSION(2, 3) :: bo LOGICAL :: gradient_f, lsd, my_calc_virial, tau_f, laplace_f, rho_f - REAL(KIND=dp) :: exc, gradient_cut, h, weight, step, rho_cutoff + REAL(KIND=dp) :: exc, gradient_cut, h, rweight, step, rho_cutoff REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: dr1dr, dra1dra, drb1drb REAL(KIND=dp), DIMENSION(3, 3) :: virial_dummy REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: norm_drho, norm_drho2, norm_drho2a, & @@ -1715,7 +1110,7 @@ CONTAINS h = section_get_rval(xc_section, "STEP_SIZE") nsteps = section_get_ival(xc_section, "NSTEPS") - IF (nsteps < LBOUND(weights, 2) .OR. nspins > UBOUND(weights, 2)) THEN + IF (nsteps < LBOUND(rweights, 2) .OR. nspins > UBOUND(rweights, 2)) THEN CPABORT("The number of steps must be a value from 1 to 4.") END IF @@ -1734,14 +1129,15 @@ CONTAINS CALL xc_rho_set_get(rho_set, can_return_null=.TRUE., rhoa=rhoa, rhob=rhob, tau_a=tau_a, tau_b=tau_b) DO istep = -nsteps, nsteps IF (istep == 0) CYCLE - weight = weights(istep, nsteps)/h + rweight = rweights(istep, nsteps)/h step = REAL(istep, dp)*h CALL calc_resp_potential_numer_ab(rho_r, rho_g, rho1_r, rhoa, rhob, vxc_rho, & - tau_r, tau1_r, tau_a, tau_b, vxc_tau, xc_section, pw_pool, step) + tau_r, tau1_r, tau_a, tau_b, vxc_tau, xc_section, & + weights, pw_pool, step) DO ispin = 1, nspins - CALL pw_axpy(vxc_rho(ispin), v_xc(ispin), weight) + CALL pw_axpy(vxc_rho(ispin), v_xc(ispin), rweight) IF (ASSOCIATED(vxc_tau) .AND. ASSOCIATED(v_tau)) THEN - CALL pw_axpy(vxc_tau(ispin), v_tau(ispin), weight) + CALL pw_axpy(vxc_tau(ispin), v_tau(ispin), rweight) END IF END DO DO ispin = 1, nspins @@ -1770,7 +1166,7 @@ CONTAINS CALL xc_rho_set_get(rho_set, can_return_null=.TRUE., rhoa=rhoa, rhob=rhob, tau_a=tau_a, tau_b=tau_b) DO istep = -nsteps, nsteps IF (istep == 0) CYCLE - weight = weights(istep, nsteps)/h + rweight = rweights(istep, nsteps)/h step = REAL(istep, dp)*h ! K(alpha,alpha) !$OMP PARALLEL DEFAULT(NONE) SHARED(rho_r,rhoa,rhob,step,rho1_r,tau_r,tau_a,tau_b,tau1_r) @@ -1790,10 +1186,10 @@ CONTAINS END IF !$OMP END PARALLEL CALL xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau_r, xc_section, & - pw_pool, .FALSE., virial_dummy) - CALL pw_axpy(vxc_rho(1), v_xc(1), weight) + weights, pw_pool, .FALSE., virial_dummy) + CALL pw_axpy(vxc_rho(1), v_xc(1), rweight) IF (ASSOCIATED(vxc_tau) .AND. ASSOCIATED(v_tau)) THEN - CALL pw_axpy(vxc_tau(1), v_tau(1), weight) + CALL pw_axpy(vxc_tau(1), v_tau(1), rweight) END IF DO ispin = 1, 2 CALL vxc_rho(ispin)%release() @@ -1823,10 +1219,10 @@ CONTAINS END IF !$OMP END PARALLEL CALL xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau_r, xc_section, & - pw_pool, .FALSE., virial_dummy) - CALL pw_axpy(vxc_rho(1), v_xc(1), weight) + weights, pw_pool, .FALSE., virial_dummy) + CALL pw_axpy(vxc_rho(1), v_xc(1), rweight) IF (ASSOCIATED(vxc_tau) .AND. ASSOCIATED(v_tau)) THEN - CALL pw_axpy(vxc_tau(1), v_tau(1), weight) + CALL pw_axpy(vxc_tau(1), v_tau(1), rweight) END IF DO ispin = 1, 2 CALL vxc_rho(ispin)%release() @@ -1850,7 +1246,7 @@ CONTAINS CALL xc_rho_set_get(rho_set, can_return_null=.TRUE., rho=rho, tau=tau) DO istep = -nsteps, nsteps IF (istep == 0) CYCLE - weight = weights(istep, nsteps)/h + rweight = rweights(istep, nsteps)/h step = REAL(istep, dp)*h !$OMP PARALLEL DEFAULT(NONE) SHARED(rho_r,rho,step,rho1_r,tau1_r,tau,tau_r) !$OMP WORKSHARE @@ -1863,10 +1259,10 @@ CONTAINS END IF !$OMP END PARALLEL CALL xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau_r, xc_section, & - pw_pool, .FALSE., virial_dummy) - CALL pw_axpy(vxc_rho(1), v_xc(1), weight) + weights, pw_pool, .FALSE., virial_dummy) + CALL pw_axpy(vxc_rho(1), v_xc(1), rweight) IF (ASSOCIATED(vxc_tau) .AND. ASSOCIATED(v_tau)) THEN - CALL pw_axpy(vxc_tau(1), v_tau(1), weight) + CALL pw_axpy(vxc_tau(1), v_tau(1), rweight) END IF CALL vxc_rho(1)%release() DEALLOCATE (vxc_rho) @@ -1936,11 +1332,14 @@ CONTAINS CALL allocate_pw(v_drhoa, pw_pool, bo) CALL allocate_pw(v_drhob, pw_pool, bo) - IF (ASSOCIATED(norm_drhoa)) CALL apply_drho(deriv_set, [deriv_norm_drhoa], virial_pw, drhoa, drho1a, virial_xc, & + IF (ASSOCIATED(norm_drhoa)) CALL apply_drho(deriv_set, [deriv_norm_drhoa], virial_pw, & + drhoa, drho1a, virial_xc, & norm_drhoa, gradient_cut, dra1dra, v_drhoa%array) - IF (ASSOCIATED(norm_drhob)) CALL apply_drho(deriv_set, [deriv_norm_drhob], virial_pw, drhob, drho1b, virial_xc, & + IF (ASSOCIATED(norm_drhob)) CALL apply_drho(deriv_set, [deriv_norm_drhob], virial_pw, & + drhob, drho1b, virial_xc, & norm_drhob, gradient_cut, drb1drb, v_drhob%array) - IF (ASSOCIATED(norm_drho)) CALL apply_drho(deriv_set, [deriv_norm_drho], virial_pw, drho, drho1, virial_xc, & + IF (ASSOCIATED(norm_drho)) CALL apply_drho(deriv_set, [deriv_norm_drho], virial_pw, & + drho, drho1, virial_xc, & norm_drho, gradient_cut, dr1dr, v_drho%array) IF (laplace_f) THEN CALL xc_derivative_get(xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa]), deriv_data=deriv_data) @@ -2016,83 +1415,83 @@ CONTAINS DO istep = -nsteps, nsteps IF (istep == 0) CYCLE - weight = weights(istep, nsteps)/h + rweight = rweights(istep, nsteps)/h step = REAL(istep, dp)*h IF (ASSOCIATED(norm_drhoa)) THEN CALL get_derivs_rho(norm_drho2a, norm_drhoa, step, xc_fun_section, lsd, rho2_set, deriv_set1) CALL update_deriv_rho(deriv_set1, [deriv_rhoa], bo, & - norm_drhoa, gradient_cut, weight, rho1a, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, rho1a, v_drhoa%array) CALL update_deriv_rho(deriv_set1, [deriv_rhob], bo, & - norm_drhoa, gradient_cut, weight, rho1b, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, rho1b, v_drhoa%array) CALL update_deriv_rho(deriv_set1, [deriv_norm_drhoa], bo, & - norm_drhoa, gradient_cut, weight, dra1dra, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, dra1dra, v_drhoa%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drhob], bo, & - norm_drhoa, gradient_cut, weight, dra1dra, drb1drb, v_drhoa%array, v_drhob%array) + norm_drhoa, gradient_cut, rweight, dra1dra, drb1drb, v_drhoa%array, v_drhob%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drho], bo, & - norm_drhoa, gradient_cut, weight, dra1dra, dr1dr, v_drhoa%array, v_drho%array) + norm_drhoa, gradient_cut, rweight, dra1dra, dr1dr, v_drhoa%array, v_drho%array) IF (tau_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_tau_a], bo, & - norm_drhoa, gradient_cut, weight, tau1a, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, tau1a, v_drhoa%array) CALL update_deriv_rho(deriv_set1, [deriv_tau_b], bo, & - norm_drhoa, gradient_cut, weight, tau1b, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, tau1b, v_drhoa%array) END IF IF (laplace_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhoa], bo, & - norm_drhoa, gradient_cut, weight, laplace1a, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, laplace1a, v_drhoa%array) CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhob], bo, & - norm_drhoa, gradient_cut, weight, laplace1b, v_drhoa%array) + norm_drhoa, gradient_cut, rweight, laplace1b, v_drhoa%array) END IF END IF IF (ASSOCIATED(norm_drhob)) THEN CALL get_derivs_rho(norm_drho2b, norm_drhob, step, xc_fun_section, lsd, rho2_set, deriv_set1) CALL update_deriv_rho(deriv_set1, [deriv_rhoa], bo, & - norm_drhob, gradient_cut, weight, rho1a, v_drhob%array) + norm_drhob, gradient_cut, rweight, rho1a, v_drhob%array) CALL update_deriv_rho(deriv_set1, [deriv_rhob], bo, & - norm_drhob, gradient_cut, weight, rho1b, v_drhob%array) + norm_drhob, gradient_cut, rweight, rho1b, v_drhob%array) CALL update_deriv_rho(deriv_set1, [deriv_norm_drhob], bo, & - norm_drhob, gradient_cut, weight, drb1drb, v_drhob%array) + norm_drhob, gradient_cut, rweight, drb1drb, v_drhob%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drhoa], bo, & - norm_drhob, gradient_cut, weight, drb1drb, dra1dra, v_drhob%array, v_drhoa%array) + norm_drhob, gradient_cut, rweight, drb1drb, dra1dra, v_drhob%array, v_drhoa%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drho], bo, & - norm_drhob, gradient_cut, weight, drb1drb, dr1dr, v_drhob%array, v_drho%array) + norm_drhob, gradient_cut, rweight, drb1drb, dr1dr, v_drhob%array, v_drho%array) IF (tau_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_tau_a], bo, & - norm_drhob, gradient_cut, weight, tau1a, v_drhob%array) + norm_drhob, gradient_cut, rweight, tau1a, v_drhob%array) CALL update_deriv_rho(deriv_set1, [deriv_tau_b], bo, & - norm_drhob, gradient_cut, weight, tau1b, v_drhob%array) + norm_drhob, gradient_cut, rweight, tau1b, v_drhob%array) END IF IF (laplace_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhoa], bo, & - norm_drhob, gradient_cut, weight, laplace1a, v_drhob%array) + norm_drhob, gradient_cut, rweight, laplace1a, v_drhob%array) CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhob], bo, & - norm_drhob, gradient_cut, weight, laplace1b, v_drhob%array) + norm_drhob, gradient_cut, rweight, laplace1b, v_drhob%array) END IF END IF IF (ASSOCIATED(norm_drho)) THEN CALL get_derivs_rho(norm_drho2, norm_drho, step, xc_fun_section, lsd, rho2_set, deriv_set1) CALL update_deriv_rho(deriv_set1, [deriv_rhoa], bo, & - norm_drho, gradient_cut, weight, rho1a, v_drho%array) + norm_drho, gradient_cut, rweight, rho1a, v_drho%array) CALL update_deriv_rho(deriv_set1, [deriv_rhob], bo, & - norm_drho, gradient_cut, weight, rho1b, v_drho%array) + norm_drho, gradient_cut, rweight, rho1b, v_drho%array) CALL update_deriv_rho(deriv_set1, [deriv_norm_drho], bo, & - norm_drho, gradient_cut, weight, dr1dr, v_drho%array) + norm_drho, gradient_cut, rweight, dr1dr, v_drho%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drhoa], bo, & - norm_drho, gradient_cut, weight, dr1dr, dra1dra, v_drho%array, v_drhoa%array) + norm_drho, gradient_cut, rweight, dr1dr, dra1dra, v_drho%array, v_drhoa%array) CALL update_deriv_drho_ab(deriv_set1, [deriv_norm_drhob], bo, & - norm_drho, gradient_cut, weight, dr1dr, drb1drb, v_drho%array, v_drhob%array) + norm_drho, gradient_cut, rweight, dr1dr, drb1drb, v_drho%array, v_drhob%array) IF (tau_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_tau_a], bo, & - norm_drho, gradient_cut, weight, tau1a, v_drho%array) + norm_drho, gradient_cut, rweight, tau1a, v_drho%array) CALL update_deriv_rho(deriv_set1, [deriv_tau_b], bo, & - norm_drho, gradient_cut, weight, tau1b, v_drho%array) + norm_drho, gradient_cut, rweight, tau1b, v_drho%array) END IF IF (laplace_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhoa], bo, & - norm_drho, gradient_cut, weight, laplace1a, v_drho%array) + norm_drho, gradient_cut, rweight, laplace1a, v_drho%array) CALL update_deriv_rho(deriv_set1, [deriv_laplace_rhob], bo, & - norm_drho, gradient_cut, weight, laplace1b, v_drho%array) + norm_drho, gradient_cut, rweight, laplace1b, v_drho%array) END IF END IF @@ -2102,70 +1501,70 @@ CONTAINS ! Obtain the numerical 2nd derivatives w.r.t. to drho and collect the potential CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_rhoa], bo, & - weight, rho1a, v_laplacea%array) + rweight, rho1a, v_laplacea%array) CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_rhob], bo, & - weight, rho1b, v_laplacea%array) + rweight, rho1b, v_laplacea%array) IF (ASSOCIATED(norm_drho)) THEN CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_norm_drho], bo, & - weight, dr1dr, v_laplacea%array) + rweight, dr1dr, v_laplacea%array) END IF IF (ASSOCIATED(norm_drhoa)) THEN CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_norm_drhoa], bo, & - weight, dra1dra, v_laplacea%array) + rweight, dra1dra, v_laplacea%array) END IF IF (ASSOCIATED(norm_drhob)) THEN CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_norm_drhob], bo, & - weight, drb1drb, v_laplacea%array) + rweight, drb1drb, v_laplacea%array) END IF IF (ASSOCIATED(tau1a)) THEN CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_tau_a], bo, & - weight, tau1a, v_laplacea%array) + rweight, tau1a, v_laplacea%array) END IF IF (ASSOCIATED(tau1b)) THEN CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_tau_b], bo, & - weight, tau1b, v_laplacea%array) + rweight, tau1b, v_laplacea%array) END IF CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_laplace_rhoa], bo, & - weight, laplace1a, v_laplacea%array) + rweight, laplace1a, v_laplacea%array) CALL update_deriv(deriv_set1, laplacea, rho_cutoff, [deriv_laplace_rhob], bo, & - weight, laplace1b, v_laplacea%array) + rweight, laplace1b, v_laplacea%array) ! The same for the beta spin CALL get_derivs_rho(laplace2b, laplaceb, step, xc_fun_section, lsd, rho2_set, deriv_set1) ! Obtain the numerical 2nd derivatives w.r.t. to drho and collect the potential CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_rhoa], bo, & - weight, rho1a, v_laplaceb%array) + rweight, rho1a, v_laplaceb%array) CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_rhob], bo, & - weight, rho1b, v_laplaceb%array) + rweight, rho1b, v_laplaceb%array) IF (ASSOCIATED(norm_drho)) THEN CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_norm_drho], bo, & - weight, dr1dr, v_laplaceb%array) + rweight, dr1dr, v_laplaceb%array) END IF IF (ASSOCIATED(norm_drhoa)) THEN CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_norm_drhoa], bo, & - weight, dra1dra, v_laplaceb%array) + rweight, dra1dra, v_laplaceb%array) END IF IF (ASSOCIATED(norm_drhob)) THEN CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_norm_drhob], bo, & - weight, drb1drb, v_laplaceb%array) + rweight, drb1drb, v_laplaceb%array) END IF IF (tau_f) THEN CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_tau_a], bo, & - weight, tau1a, v_laplaceb%array) + rweight, tau1a, v_laplaceb%array) CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_tau_b], bo, & - weight, tau1b, v_laplaceb%array) + rweight, tau1b, v_laplaceb%array) END IF CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_laplace_rhoa], bo, & - weight, laplace1a, v_laplaceb%array) + rweight, laplace1a, v_laplaceb%array) CALL update_deriv(deriv_set1, laplaceb, rho_cutoff, [deriv_laplace_rhob], bo, & - weight, laplace1b, v_laplaceb%array) + rweight, laplace1b, v_laplaceb%array) END IF END DO @@ -2201,39 +1600,39 @@ CONTAINS DO istep = -nsteps, nsteps IF (istep == 0) CYCLE - weight = weights(istep, nsteps)/h + rweight = rweights(istep, nsteps)/h step = REAL(istep, dp)*h CALL get_derivs_rho(norm_drho2, norm_drho, step, xc_fun_section, lsd, rho2_set, deriv_set1) ! Obtain the numerical 2nd derivatives w.r.t. to drho and collect the potential CALL update_deriv_rho(deriv_set1, [deriv_rho], bo, & - norm_drho, gradient_cut, weight, rho1, v_drho%array) + norm_drho, gradient_cut, rweight, rho1, v_drho%array) CALL update_deriv_rho(deriv_set1, [deriv_norm_drho], bo, & - norm_drho, gradient_cut, weight, dr1dr, v_drho%array) + norm_drho, gradient_cut, rweight, dr1dr, v_drho%array) IF (tau_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_tau], bo, & - norm_drho, gradient_cut, weight, tau1, v_drho%array) + norm_drho, gradient_cut, rweight, tau1, v_drho%array) END IF IF (laplace_f) THEN CALL update_deriv_rho(deriv_set1, [deriv_laplace_rho], bo, & - norm_drho, gradient_cut, weight, laplace1, v_drho%array) + norm_drho, gradient_cut, rweight, laplace1, v_drho%array) CALL get_derivs_rho(laplace2, laplace, step, xc_fun_section, lsd, rho2_set, deriv_set1) ! Obtain the numerical 2nd derivatives w.r.t. to drho and collect the potential CALL update_deriv(deriv_set1, laplace, rho_cutoff, [deriv_rho], bo, & - weight, rho1, v_laplace%array) + rweight, rho1, v_laplace%array) CALL update_deriv(deriv_set1, laplace, rho_cutoff, [deriv_norm_drho], bo, & - weight, dr1dr, v_laplace%array) + rweight, dr1dr, v_laplace%array) IF (tau_f) THEN CALL update_deriv(deriv_set1, laplace, rho_cutoff, [deriv_tau], bo, & - weight, tau1, v_laplace%array) + rweight, tau1, v_laplace%array) END IF CALL update_deriv(deriv_set1, laplace, rho_cutoff, [deriv_laplace_rho], bo, & - weight, laplace1, v_laplace%array) + rweight, laplace1, v_laplace%array) END IF END DO @@ -2296,11 +1695,12 @@ CONTAINS ! ************************************************************************************************** SUBROUTINE calc_resp_potential_numer_ab(rho_r, rho_g, rho1_r, rhoa, rhob, vxc_rho, & tau_r, tau1_r, tau_a, tau_b, vxc_tau, & - xc_section, pw_pool, step) + xc_section, weights, pw_pool, step) TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER, INTENT(IN) :: vxc_rho, vxc_tau TYPE(pw_r3d_rs_type), DIMENSION(:), INTENT(IN) :: rho1_r TYPE(pw_r3d_rs_type), DIMENSION(:), INTENT(IN), POINTER :: tau1_r + TYPE(pw_r3d_rs_type), INTENT(IN), POINTER :: weights TYPE(pw_pool_type), INTENT(IN), POINTER :: pw_pool TYPE(section_vals_type), INTENT(IN), POINTER :: xc_section REAL(KIND=dp), INTENT(IN) :: step @@ -2334,7 +1734,7 @@ CONTAINS END IF !$OMP END PARALLEL CALL xc_vxc_pw_create(vxc_rho, vxc_tau, exc, rho_r, rho_g, tau_r, xc_section, & - pw_pool, .FALSE., virial_dummy) + weights, pw_pool, .FALSE., virial_dummy) CALL timestop(handle) @@ -2353,12 +1753,13 @@ CONTAINS !> \param dr1dr ... !> \param v_drho ... ! ************************************************************************************************** - SUBROUTINE apply_drho(deriv_set, description, virial_pw, drho, drho1, virial_xc, norm_drho, gradient_cut, dr1dr, v_drho) + SUBROUTINE apply_drho(deriv_set, description, virial_pw, drho, drho1, & + virial_xc, norm_drho, gradient_cut, dr1dr, v_drho) TYPE(xc_derivative_set_type), INTENT(IN) :: deriv_set INTEGER, DIMENSION(:), INTENT(in) :: description - TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw - TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1 + TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw + TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1 REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: norm_drho REAL(KIND=dp), INTENT(IN) :: gradient_cut @@ -3129,10 +2530,10 @@ CONTAINS END IF IF (laplace_f) THEN - DO ispin = 1, nspins - CALL deallocate_pw(v_laplace(ispin), pw_pool) - END DO - DEALLOCATE (v_laplace) + DO ispin = 1, nspins + CALL deallocate_pw(v_laplace(ispin), pw_pool) + END DO + DEALLOCATE (v_laplace) END IF IF (ASSOCIATED(tmp_g%pw_grid) .AND. ASSOCIATED(pw_pool)) THEN @@ -3861,8 +3262,8 @@ CONTAINS !> \param virial_xc ... ! ************************************************************************************************** SUBROUTINE virial_drho_drho1(virial_pw, drho, drho1, deriv_data, virial_xc) - TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw - TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1 + TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw + TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1 REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: deriv_data REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc @@ -3891,9 +3292,9 @@ CONTAINS !> \param virial_xc ... ! ************************************************************************************************** SUBROUTINE virial_drho_drho(virial_pw, drho, v_drho, virial_xc) - TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw - TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho - TYPE(pw_r3d_rs_type), INTENT(IN) :: v_drho + TYPE(pw_r3d_rs_type), INTENT(IN) :: virial_pw + TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho + TYPE(pw_r3d_rs_type), INTENT(IN) :: v_drho REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc INTEGER :: idir, jdir @@ -3921,16 +3322,16 @@ CONTAINS !> \param deriv_data ... ! ************************************************************************************************** SUBROUTINE virial_laplace(rho_r, pw_pool, virial_xc, deriv_data) - TYPE(pw_r3d_rs_type), TARGET :: rho_r - TYPE(pw_pool_type), POINTER, INTENT(IN) :: pw_pool - REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc - REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: deriv_data + TYPE(pw_r3d_rs_type), TARGET :: rho_r + TYPE(pw_pool_type), POINTER, INTENT(IN) :: pw_pool + REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc + REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: deriv_data CHARACTER(len=*), PARAMETER :: routineN = 'virial_laplace' - INTEGER :: handle, idir, jdir - TYPE(pw_r3d_rs_type), POINTER :: virial_pw - TYPE(pw_c1d_gs_type), POINTER :: tmp_g, rho_g + INTEGER :: handle, idir, jdir + TYPE(pw_r3d_rs_type), POINTER :: virial_pw + TYPE(pw_c1d_gs_type), POINTER :: tmp_g, rho_g INTEGER, DIMENSION(3) :: my_deriv CALL timeset(routineN, handle) @@ -3975,18 +3376,21 @@ CONTAINS !> derivatives were calculated !> \param rho_r the place where you evaluate the derivative !> \param pw_pool the pool for the grids +!> \param weights integration weights !> \param xc_section which functional should be used and how to calculate it !> \param tau_r kinetic energy density in real space ! ************************************************************************************************** SUBROUTINE xc_prep_2nd_deriv(deriv_set, & - rho_set, rho_r, pw_pool, xc_section, tau_r) + rho_set, rho_r, pw_pool, weights, xc_section, tau_r) TYPE(xc_derivative_set_type) :: deriv_set TYPE(xc_rho_set_type) :: rho_set - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r TYPE(pw_pool_type), POINTER :: pw_pool + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(section_vals_type), POINTER :: xc_section - TYPE(pw_r3d_rs_type), DIMENSION(:), OPTIONAL, POINTER :: tau_r + TYPE(pw_r3d_rs_type), DIMENSION(:), & + OPTIONAL, POINTER :: tau_r CHARACTER(len=*), PARAMETER :: routineN = 'xc_prep_2nd_deriv' @@ -4009,11 +3413,11 @@ CONTAINS IF (section_get_lval(xc_section, "2ND_DERIV_ANALYTICAL")) THEN CALL xc_rho_set_and_dset_create(rho_set, deriv_set, 2, & - rho_r, rho_g, tau, xc_section, pw_pool, & + rho_r, rho_g, tau, xc_section, pw_pool, weights, & calc_potential=.TRUE.) ELSE CALL xc_rho_set_and_dset_create(rho_set, deriv_set, 1, & - rho_r, rho_g, tau, xc_section, pw_pool, & + rho_r, rho_g, tau, xc_section, pw_pool, weights, & calc_potential=.TRUE.) END IF @@ -4029,20 +3433,24 @@ CONTAINS !> derivatives were calculated !> \param rho_r the place where you evaluate the derivative !> \param pw_pool the pool for the grids +!> \param weights integration weights !> \param xc_section which functional should be used and how to calculate it !> \param tau_r kinetic energy density in real space !> \param do_sf Flag to activate the noncollinear kernel for spin flip calculations !> \par History !> * 07.2024 Created [LHS] ! ************************************************************************************************** - SUBROUTINE xc_prep_3rd_deriv(deriv_set, rho_set, rho_r, pw_pool, xc_section, tau_r, do_sf) + SUBROUTINE xc_prep_3rd_deriv(deriv_set, rho_set, rho_r, pw_pool, weights, & + xc_section, tau_r, do_sf) TYPE(xc_derivative_set_type) :: deriv_set TYPE(xc_rho_set_type) :: rho_set - TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r + TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r TYPE(pw_pool_type), POINTER :: pw_pool + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(section_vals_type), POINTER :: xc_section - TYPE(pw_r3d_rs_type), DIMENSION(:), OPTIONAL, POINTER :: tau_r + TYPE(pw_r3d_rs_type), DIMENSION(:), & + OPTIONAL, POINTER :: tau_r LOGICAL, OPTIONAL :: do_sf CHARACTER(len=*), PARAMETER :: routineN = 'xc_prep_3rd_deriv' @@ -4069,11 +3477,11 @@ CONTAINS IF (do_sf) THEN CALL xc_rho_set_and_dset_create(rho_set, deriv_set, 2, & - rho_r, rho_g, tau, xc_section, pw_pool, & + rho_r, rho_g, tau, xc_section, pw_pool, weights, & calc_potential=.TRUE.) ELSE CALL xc_rho_set_and_dset_create(rho_set, deriv_set, 3, & - rho_r, rho_g, tau, xc_section, pw_pool, & + rho_r, rho_g, tau, xc_section, pw_pool, weights, & calc_potential=.TRUE.) END IF diff --git a/src/xc/xc_atom.F b/src/xc/xc_atom.F index a394fe42d1..2d9daaf6b6 100644 --- a/src/xc/xc_atom.F +++ b/src/xc/xc_atom.F @@ -76,8 +76,8 @@ CONTAINS TYPE(xc_rho_set_type), INTENT(IN) :: rho_set TYPE(xc_derivative_set_type), INTENT(IN) :: deriv_set INTEGER, INTENT(in) :: deriv_order - TYPE(xc_rho_cflags_type), INTENT(in) :: needs - REAL(dp), DIMENSION(:, :), POINTER :: w + TYPE(xc_rho_cflags_type), INTENT(IN) :: needs + REAL(dp), DIMENSION(:, :), INTENT(IN) :: w LOGICAL, INTENT(IN) :: lsd INTEGER, INTENT(in) :: na, nr REAL(dp) :: exc @@ -298,8 +298,8 @@ CONTAINS TYPE(section_vals_type), POINTER :: xc_fun_section TYPE(xc_rho_set_type), INTENT(IN) :: rho_set TYPE(xc_derivative_set_type), INTENT(IN) :: deriv_set - TYPE(xc_rho_cflags_type), INTENT(in) :: needs - REAL(dp), DIMENSION(:, :), POINTER :: w + TYPE(xc_rho_cflags_type), INTENT(IN) :: needs + REAL(dp), DIMENSION(:, :), INTENT(IN) :: w LOGICAL, INTENT(IN) :: lsd INTEGER, INTENT(in) :: na, nr REAL(dp) :: exc @@ -410,7 +410,7 @@ CONTAINS TYPE(xc_rho_set_type), INTENT(IN) :: rho_set, rho1_set TYPE(section_vals_type), POINTER :: xc_section TYPE(xc_derivative_set_type), INTENT(INOUT) :: deriv_set - REAL(dp), DIMENSION(:, :), POINTER :: w + REAL(dp), DIMENSION(:, :), INTENT(IN) :: w REAL(dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: vxc REAL(dp), DIMENSION(:, :, :, :), POINTER :: vxg LOGICAL, INTENT(IN), OPTIONAL :: do_triplet, do_sf @@ -469,7 +469,8 @@ CONTAINS NULLIFY (vxc_tau_pw) CALL xc_calc_2nd_deriv_analytical(vxc_pw, vxc_tau_pw, deriv_set, rho_set, rho1_set, pw_pool, & - xc_section, gapw=.TRUE., vxg=vxg, tddfpt_fac=my_fac_triplet, spinflip=do_sf) + xc_section, gapw=.TRUE., vxg=vxg, & + tddfpt_fac=my_fac_triplet, spinflip=do_sf) DEALLOCATE (vxc_pw) diff --git a/src/xc/xc_input_constants.F b/src/xc/xc_input_constants.F index 1a1b4b0d24..6ba916e419 100644 --- a/src/xc/xc_input_constants.F +++ b/src/xc/xc_input_constants.F @@ -34,10 +34,6 @@ MODULE xc_input_constants xc_pbe_rev = 12, & xc_pbe_sol = 13 - INTEGER, PARAMETER, PUBLIC :: xc_default_f_routine = 1, & - xc_test_lsd_f_routine = 2, & - xc_debug_new_routine = 3 - INTEGER, PARAMETER, PUBLIC :: xgga_b88 = 101, & xgga_b88x = 102, & xgga_pw86 = 103, & diff --git a/src/xc_pot_saop.F b/src/xc_pot_saop.F index d2978ebb8e..186d29c5d6 100644 --- a/src/xc_pot_saop.F +++ b/src/xc_pot_saop.F @@ -79,7 +79,7 @@ MODULE xc_pot_saop gaVxcgb_noGC USE util, ONLY: get_limit USE virial_types, ONLY: virial_type - USE xc, ONLY: xc_vxc_pw_create1 + USE xc, ONLY: xc_vxc_pw_create USE xc_atom, ONLY: fill_rho_set,& vxc_of_r_new,& xc_rho_set_atom_update @@ -152,6 +152,7 @@ CONTAINS TYPE(pw_r3d_rs_type), ALLOCATABLE, DIMENSION(:) :: vxc_GLLB, vxc_SAOP TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: rho_r, rho_struct_r, tau, vxc_LB, & vxc_tau, vxc_tmp + TYPE(pw_r3d_rs_type), POINTER :: weights TYPE(qs_ks_env_type), POINTER :: ks_env TYPE(qs_rho_type), POINTER :: rho_struct TYPE(section_vals_type), POINTER :: input, xc_fun_section_orig, & @@ -172,6 +173,7 @@ CONTAINS CALL get_qs_env(qs_env, & ks_env=ks_env, & rho=rho_struct, & + xcint_weights=weights, & pw_env=pw_env, & input=input, & virial=virial, & @@ -248,12 +250,9 @@ CONTAINS xc_fun_section_tmp) CPASSERT(.NOT. compute_virial) -! CALL xc_vxc_pw_create(vxc_tmp, vxc_tau, xc_energy, rho_r, rho_g, tau, & -! xc_section_tmp, auxbas_pw_pool, & -! compute_virial=.FALSE., virial_xc=virial_xc_tmp) - CALL xc_vxc_pw_create1(vxc_tmp, vxc_tau, rho_r, rho_g, tau, xc_energy, & - xc_section_tmp, auxbas_pw_pool, & - compute_virial=.FALSE., virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_tmp, vxc_tau, xc_energy, rho_r, rho_g, tau, & + xc_section_tmp, weights, auxbas_pw_pool, & + compute_virial=.FALSE., virial_xc=virial_xc_tmp) CALL section_vals_val_set(xc_fun_section_tmp, "XALPHA%_SECTION_PARAMETERS_", & l_val=.FALSE.) @@ -261,12 +260,9 @@ CONTAINS l_val=.TRUE.) CPASSERT(.NOT. compute_virial) -! CALL xc_vxc_pw_create(vxc_LB, vxc_tau, xc_energy, rho_r, rho_g, tau, & -! xc_section_tmp, auxbas_pw_pool, & -! compute_virial=.FALSE., virial_xc=virial_xc_tmp) - CALL xc_vxc_pw_create1(vxc_LB, vxc_tau, rho_r, rho_g, tau, xc_energy, & - xc_section_tmp, auxbas_pw_pool, & - compute_virial=.FALSE., virial_xc=virial_xc_tmp) + CALL xc_vxc_pw_create(vxc_LB, vxc_tau, xc_energy, rho_r, rho_g, tau, & + xc_section_tmp, weights, auxbas_pw_pool, & + compute_virial=.FALSE., virial_xc=virial_xc_tmp) DO ispin = 1, nspins CALL pw_axpy(vxc_tmp(ispin), vxc_LB(ispin), alpha) @@ -494,12 +490,11 @@ CONTAINS INTEGER, DIMENSION(2) :: bo, homo, ncol, nrow INTEGER, DIMENSION(2, 3) :: bounds INTEGER, DIMENSION(:), POINTER :: atom_list - LOGICAL :: lsd, paw_atom + LOGICAL :: accint, lsd, paw_atom REAL(dp), DIMENSION(:, :, :), POINTER :: tau - REAL(KIND=dp) :: density_cut, efac, exc, gradient_cut, & - tau_cut, we_GLLB, we_LB - REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: coeff_col - REAL(KIND=dp), DIMENSION(:, :), POINTER :: weight + REAL(KIND=dp) :: agr, alpha, density_cut, efac, exc, & + gradient_cut, tau_cut, we_GLLB, we_LB + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: coeff_col, weight_h, weight_s REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: dummy, e_uniform, rho_h, rho_s, vtau, & vxc_GLLB_h, vxc_GLLB_s, vxc_LB_h, vxc_LB_s, vxc_SAOP_h, vxc_SAOP_s, vxc_tmp_h, vxc_tmp_s REAL(KIND=dp), DIMENSION(:, :, :, :), POINTER :: drho_h, drho_s, vxg @@ -535,7 +530,7 @@ CONTAINS TYPE(xc_rho_set_type) :: orb_rho_set_h, orb_rho_set_s, rho_set_h, & rho_set_s - NULLIFY (weight, rho_h, rho_s, vxc_LB_h, vxc_LB_s, vxc_GLLB_h, vxc_GLLB_s, & + NULLIFY (rho_h, rho_s, vxc_LB_h, vxc_LB_s, vxc_GLLB_h, vxc_GLLB_s, & vxc_tmp_h, vxc_tmp_s, vtau, dummy, e_uniform, drho_h, drho_s, vxg, atom_list, & atomic_kind_set, qs_kind_set, deriv, atomic_grid, rho_struct_ao, & harmonics, molecular_orbitals, rho_structure, r_h, r_s, dr_h, dr_s, & @@ -564,6 +559,8 @@ CONTAINS CALL section_vals_retain(xc_section_orig) CALL section_vals_duplicate(xc_section_orig, xc_section_tmp) + accint = dft_control%qs_control%gapw_control%accurate_xcint + ! [SC] the following code can be traced back to SVN rev. 4296 (git:f97138b) that ! has removed the component 'nspins' from the derived type 'dft_control_type'. ! Is it worth to remove the code below in favour of 'dft_control%nspins' @@ -652,7 +649,7 @@ CONTAINS CALL xc_rho_set_atom_update(orb_rho_set_s, needs, nspins, bounds) ALLOCATE (rho_h(1:na, 1:nr, 1:nspins), rho_s(1:na, 1:nr, 1:nspins)) - ALLOCATE (weight(1:na, 1:nr)) + ALLOCATE (weight_h(1:na, 1:nr), weight_s(1:na, 1:nr)) ALLOCATE (vxc_LB_h(1:na, 1:nr, 1:nspins), vxc_LB_s(1:na, 1:nr, 1:nspins)) ALLOCATE (vxc_GLLB_h(1:na, 1:nr, 1:nspins), vxc_GLLB_s(1:na, 1:nr, 1:nspins)) ALLOCATE (vxc_tmp_h(1:na, 1:nr, 1:nspins), vxc_tmp_s(1:na, 1:nr, 1:nspins)) @@ -662,6 +659,23 @@ CONTAINS ! Distribute the atoms of this kind bo = get_limit(natom, para_env%num_pe, para_env%mepos) + DO ir = 1, nr + DO ia = 1, na + weight_h(ia, ir) = atomic_grid%wr(ir)*atomic_grid%wa(ia) + END DO + IF (accint) THEN + alpha = dft_control%qs_control%gapw_control%aw(ikind) + agr = 1.0_dp - EXP(-alpha*atomic_grid%rad2(ir)) + DO ia = 1, na + weight_s(ia, ir) = atomic_grid%wr(ir)*atomic_grid%wa(ia)*agr + END DO + ELSE + DO ia = 1, na + weight_s(ia, ir) = atomic_grid%wr(ir)*atomic_grid%wa(ia) + END DO + END IF + END DO + DO iat = 1, natom !bo(1),bo(2) iatom = atom_list(iat) @@ -684,11 +698,6 @@ CONTAINS CALL fill_rho_set(rho_set_h, lsd, nspins, needs, rho_h, drho_h, tau, na, ir) CALL fill_rho_set(rho_set_s, lsd, nspins, needs, rho_s, drho_s, tau, na, ir) END DO - DO ir = 1, nr - DO ia = 1, na - weight(ia, ir) = atomic_grid%wr(ir)*atomic_grid%wa(ia) - END DO - END DO !-----------------------------! ! 1. Slater exchange for LB94 ! @@ -708,10 +717,10 @@ CONTAINS !---------------------! CALL xc_dset_zero_all(deriv_set) CALL vxc_of_r_new(xc_fun_section_tmp, rho_set_h, deriv_set, 1, needs, & - weight, lsd, na, nr, exc, vxc_tmp_h, vxg, vtau) + weight_h, lsd, na, nr, exc, vxc_tmp_h, vxg, vtau) CALL xc_dset_zero_all(deriv_set) CALL vxc_of_r_new(xc_fun_section_tmp, rho_set_s, deriv_set, 1, needs, & - weight, lsd, na, nr, exc, vxc_tmp_s, vxg, vtau) + weight_s, lsd, na, nr, exc, vxc_tmp_s, vxg, vtau) !-------------------------------------------! ! 2. PZ correlation for LB94 and ec_uniform ! @@ -726,12 +735,12 @@ CONTAINS !------! CALL xc_dset_zero_all(deriv_set) CALL vxc_of_r_new(xc_fun_section_tmp, rho_set_h, deriv_set, 1, needs, & - weight, lsd, na, nr, exc, vxc_LB_h, vxg, vtau) + weight_h, lsd, na, nr, exc, vxc_LB_h, vxg, vtau) vxc_LB_h = vxc_LB_h + alpha*vxc_tmp_h DO ispin = 1, nspins dummy => vxc_tmp_h(:, :, ispin:ispin) CALL add_lb_pot(dummy, rho_set_h, lsd, ispin) - vxc_LB_h(:, :, ispin) = vxc_LB_h(:, :, ispin) - weight(:, :)*vxc_tmp_h(:, :, ispin) + vxc_LB_h(:, :, ispin) = vxc_LB_h(:, :, ispin) - weight_h(:, :)*vxc_tmp_h(:, :, ispin) END DO NULLIFY (dummy) @@ -742,7 +751,7 @@ CONTAINS DO ispin = 1, nspins dummy => vxc_GLLB_h(:, :, ispin:ispin) CALL calc_2excpbe(dummy, rho_set_h, e_uniform, lsd) - vxc_GLLB_h(:, :, ispin) = vxc_GLLB_h(:, :, ispin)*weight(:, :) + vxc_GLLB_h(:, :, ispin) = vxc_GLLB_h(:, :, ispin)*weight_h(:, :) END DO NULLIFY (deriv, dummy, e_uniform) @@ -751,13 +760,13 @@ CONTAINS !------! CALL xc_dset_zero_all(deriv_set) CALL vxc_of_r_new(xc_fun_section_tmp, rho_set_s, deriv_set, 1, needs, & - weight, lsd, na, nr, exc, vxc_LB_s, vxg, vtau) + weight_s, lsd, na, nr, exc, vxc_LB_s, vxg, vtau) vxc_LB_s = vxc_LB_s + alpha*vxc_tmp_s DO ispin = 1, nspins dummy => vxc_tmp_s(:, :, ispin:ispin) CALL add_lb_pot(dummy, rho_set_s, lsd, ispin) - vxc_LB_s(:, :, ispin) = vxc_LB_s(:, :, ispin) - weight(:, :)*vxc_tmp_s(:, :, ispin) + vxc_LB_s(:, :, ispin) = vxc_LB_s(:, :, ispin) - weight_s(:, :)*vxc_tmp_s(:, :, ispin) END DO NULLIFY (dummy) @@ -768,7 +777,7 @@ CONTAINS DO ispin = 1, nspins dummy => vxc_GLLB_s(:, :, ispin:ispin) CALL calc_2excpbe(dummy, rho_set_s, e_uniform, lsd) - vxc_GLLB_s(:, :, ispin) = vxc_GLLB_s(:, :, ispin)*weight(:, :) + vxc_GLLB_s(:, :, ispin) = vxc_GLLB_s(:, :, ispin)*weight_s(:, :) END DO NULLIFY (deriv, dummy, e_uniform) @@ -848,16 +857,16 @@ CONTAINS DO ia = 1, na IF (rho_set_h%rhoa(ia, ir, 1) > rho_set_h%rho_cutoff) & vxc_GLLB_h(ia, ir, 1) = vxc_GLLB_h(ia, ir, 1) + & - weight(ia, ir)*vxc_tmp_h(ia, ir, 1)/rho_set_h%rhoa(ia, ir, 1) + weight_h(ia, ir)*vxc_tmp_h(ia, ir, 1)/rho_set_h%rhoa(ia, ir, 1) IF (rho_set_h%rhob(ia, ir, 1) > rho_set_h%rho_cutoff) & vxc_GLLB_h(ia, ir, 2) = vxc_GLLB_h(ia, ir, 2) + & - weight(ia, ir)*vxc_tmp_h(ia, ir, 2)/rho_set_h%rhob(ia, ir, 1) + weight_h(ia, ir)*vxc_tmp_h(ia, ir, 2)/rho_set_h%rhob(ia, ir, 1) IF (rho_set_s%rhoa(ia, ir, 1) > rho_set_s%rho_cutoff) & vxc_GLLB_s(ia, ir, 1) = vxc_GLLB_s(ia, ir, 1) + & - weight(ia, ir)*vxc_tmp_s(ia, ir, 1)/rho_set_s%rhoa(ia, ir, 1) + weight_s(ia, ir)*vxc_tmp_s(ia, ir, 1)/rho_set_s%rhoa(ia, ir, 1) IF (rho_set_s%rhob(ia, ir, 1) > rho_set_s%rho_cutoff) & vxc_GLLB_s(ia, ir, 2) = vxc_GLLB_s(ia, ir, 2) + & - weight(ia, ir)*vxc_tmp_s(ia, ir, 2)/rho_set_s%rhob(ia, ir, 1) + weight_s(ia, ir)*vxc_tmp_s(ia, ir, 2)/rho_set_s%rhob(ia, ir, 1) END DO END DO ELSE @@ -865,10 +874,10 @@ CONTAINS DO ia = 1, na IF (rho_set_h%rho(ia, ir, 1) > rho_set_h%rho_cutoff) & vxc_GLLB_h(ia, ir, 1) = vxc_GLLB_h(ia, ir, 1) + & - weight(ia, ir)*vxc_tmp_h(ia, ir, 1)/rho_set_h%rho(ia, ir, 1) + weight_h(ia, ir)*vxc_tmp_h(ia, ir, 1)/rho_set_h%rho(ia, ir, 1) IF (rho_set_s%rho(ia, ir, 1) > rho_set_s%rho_cutoff) & vxc_GLLB_s(ia, ir, 1) = vxc_GLLB_s(ia, ir, 1) + & - weight(ia, ir)*vxc_tmp_s(ia, ir, 1)/rho_set_s%rho(ia, ir, 1) + weight_s(ia, ir)*vxc_tmp_s(ia, ir, 1)/rho_set_s%rho(ia, ir, 1) END DO END DO END IF @@ -1009,7 +1018,7 @@ CONTAINS END DO - DEALLOCATE (rho_h, rho_s, weight) + DEALLOCATE (rho_h, rho_s, weight_h, weight_s) DEALLOCATE (vxc_LB_h, vxc_LB_s) DEALLOCATE (vxc_GLLB_h, vxc_GLLB_s) DEALLOCATE (vxc_tmp_h, vxc_tmp_s) diff --git a/src/xc_write_output.F b/src/xc_write_output.F index 1e88e5ea09..1ac2f5c158 100644 --- a/src/xc_write_output.F +++ b/src/xc_write_output.F @@ -55,8 +55,6 @@ CONTAINS CALL section_vals_val_get(xc_fun_section, "_SECTION_PARAMETERS_", i_val=myfun) IF (myfun /= xc_none) THEN - !check if FUNCTIONAL_ROUTINE keyword present - CALL xc_functionals_expand(xc_fun_section, xc_section) ifun = 0 DO diff --git a/tests/QS/regtest-acc-1/Ar-1.inp b/tests/QS/regtest-acc-1/Ar-1.inp new file mode 100644 index 0000000000..c8e0b7bb97 --- /dev/null +++ b/tests/QS/regtest-acc-1/Ar-1.inp @@ -0,0 +1,46 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT "Ar" + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME "BASIS_SET" + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + REL_CUTOFF 40 + &END MGRID + &PRINT + &DERIVATIVES + &END DERIVATIVES + &END PRINT + &QS + FORCE_PAW + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-8 + SCF_GUESS atomic + &END SCF + &XC + &XC_FUNCTIONAL Pade + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + Ar 0.100000 0.120000 0.110000 + &END COORD + &KIND Ar + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q8 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/Ar-2.inp b/tests/QS/regtest-acc-1/Ar-2.inp new file mode 100644 index 0000000000..9381935998 --- /dev/null +++ b/tests/QS/regtest-acc-1/Ar-2.inp @@ -0,0 +1,46 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT "Ar" + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + REL_CUTOFF 40 + &END MGRID + &PRINT + &DERIVATIVES + &END DERIVATIVES + &END PRINT + &QS + FORCE_PAW + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-8 + SCF_GUESS atomic + &END SCF + &XC + &XC_FUNCTIONAL Pade + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + Ar 0.100000 0.120000 0.110000 + &END COORD + &KIND Ar + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q8 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/Ar-3.inp b/tests/QS/regtest-acc-1/Ar-3.inp new file mode 100644 index 0000000000..60107d1820 --- /dev/null +++ b/tests/QS/regtest-acc-1/Ar-3.inp @@ -0,0 +1,46 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT "Ar" + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + REL_CUTOFF 40 + &END MGRID + &PRINT + &DERIVATIVES + &END DERIVATIVES + &END PRINT + &QS + FORCE_PAW + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-8 + SCF_GUESS atomic + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + Ar 0.100000 0.120000 0.110000 + &END COORD + &KIND Ar + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q8 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/Ar-4.inp b/tests/QS/regtest-acc-1/Ar-4.inp new file mode 100644 index 0000000000..ec1774e14d --- /dev/null +++ b/tests/QS/regtest-acc-1/Ar-4.inp @@ -0,0 +1,46 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT "Ar" + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + REL_CUTOFF 40 + &END MGRID + &PRINT + &DERIVATIVES + &END DERIVATIVES + &END PRINT + &QS + FORCE_PAW + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-8 + SCF_GUESS atomic + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + Ar 0.100000 0.120000 0.110000 + &END COORD + &KIND Ar + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q8 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/F2.inp b/tests/QS/regtest-acc-1/F2.inp new file mode 100644 index 0000000000..7936885973 --- /dev/null +++ b/tests/QS/regtest-acc-1/F2.inp @@ -0,0 +1,61 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT F2 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + CHECK_ATOM_FORCE 2 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH F +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME "BASIS_SET" + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 240 + REL_CUTOFF 50 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + F 0.000000 0.000000 0.530000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND F + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q7 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-1.inp b/tests/QS/regtest-acc-1/HF-1.inp new file mode 100644 index 0000000000..5e44c1347b --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-1.inp @@ -0,0 +1,67 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-12 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET TZVPP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET TZVPP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-2.inp b/tests/QS/regtest-acc-1/HF-2.inp new file mode 100644 index 0000000000..dd72c7062f --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-2.inp @@ -0,0 +1,67 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-12 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-3.inp b/tests/QS/regtest-acc-1/HF-3.inp new file mode 100644 index 0000000000..9d7f4a7d7f --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-3.inp @@ -0,0 +1,70 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-12 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &XC_GRID + XC_DERIV NN50_SMOOTH + &END XC_GRID + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET TZVPP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET TZVPP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-4.inp b/tests/QS/regtest-acc-1/HF-4.inp new file mode 100644 index 0000000000..478e8bdffa --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-4.inp @@ -0,0 +1,61 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL TPSS + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-5.inp b/tests/QS/regtest-acc-1/HF-5.inp new file mode 100644 index 0000000000..3adbf45356 --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-5.inp @@ -0,0 +1,70 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_ae + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d1.inp b/tests/QS/regtest-acc-1/HF-d1.inp new file mode 100644 index 0000000000..1618f1a2aa --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d1.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &EFIELD + &END EFIELD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + ALPHA_WEIGHTS 6.0 + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-12 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d2.inp b/tests/QS/regtest-acc-1/HF-d2.inp new file mode 100644 index 0000000000..8f6524a024 --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d2.inp @@ -0,0 +1,74 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL TPSS + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d3.inp b/tests/QS/regtest-acc-1/HF-d3.inp new file mode 100644 index 0000000000..3081571b9a --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d3.inp @@ -0,0 +1,75 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 2 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-12 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d4.inp b/tests/QS/regtest-acc-1/HF-d4.inp new file mode 100644 index 0000000000..6bba0fb979 --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d4.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_ae + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET ORB SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d5.inp b/tests/QS/regtest-acc-1/HF-d5.inp new file mode 100644 index 0000000000..ca893aac8c --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d5.inp @@ -0,0 +1,82 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB DZVP-MOLOPT-GGA-GTH-q1 + BASIS_SET AUX_FIT pfit3 + POTENTIAL GTH-GGA-q1 + &END KIND + &KIND F + BASIS_SET ORB DZVP-MOLOPT-GGA-GTH-q7 + BASIS_SET AUX_FIT pfit3 + POTENTIAL GTH-GGA-q7 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/HF-d6.inp b/tests/QS/regtest-acc-1/HF-d6.inp new file mode 100644 index 0000000000..22dd3c70e8 --- /dev/null +++ b/tests/QS/regtest-acc-1/HF-d6.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_ae + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET ORB SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-1/TEST_FILES.toml b/tests/QS/regtest-acc-1/TEST_FILES.toml new file mode 100644 index 0000000000..222b84d146 --- /dev/null +++ b/tests/QS/regtest-acc-1/TEST_FILES.toml @@ -0,0 +1,22 @@ +# +"Ar-1.inp" = [{matcher="E_total", tol=1e-12, ref=-21.04944198733016}] +"Ar-2.inp" = [{matcher="E_total", tol=1e-12, ref=-21.04944239056047}] +"Ar-3.inp" = [{matcher="E_total", tol=1e-12, ref=-21.13848179618906}] +"Ar-4.inp" = [{matcher="E_total", tol=1e-12, ref=-21.13848219953337}] +# +"HF-1.inp" = [{matcher="E_total", tol=1e-12, ref=-100.3509709548997}] +"HF-2.inp" = [{matcher="E_total", tol=1e-12, ref=-100.1363374234943}] +"HF-3.inp" = [{matcher="E_total", tol=1e-12, ref=-100.3509805804002}] +"HF-4.inp" = [{matcher="E_total", tol=1e-12, ref=-100.2328561104310}] +"HF-5.inp" = [{matcher="E_total", tol=1e-12, ref=-100.1323241157565}] +# +"HF-d1.inp" = [] +"HF-d2.inp" = [] +"HF-d3.inp" = [] +"HF-d4.inp" = [] +"HF-d5.inp" = [] +"HF-d6.inp" = [] +# +"F2.inp" = [] +"h2o.inp" = [{matcher="E_total", tol=1e-12, ref=-17.26044915752584}] +#EOF diff --git a/tests/QS/regtest-acc-1/h2o.inp b/tests/QS/regtest-acc-1/h2o.inp new file mode 100644 index 0000000000..69acd170fe --- /dev/null +++ b/tests/QS/regtest-acc-1/h2o.inp @@ -0,0 +1,55 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT h2o + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME "BASIS_SET" + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &PRINT + &DERIVATIVES + &END DERIVATIVES + &END PRINT + &QS + ALPHA_WEIGHTS 6.5 + EPS_DEFAULT 1.0E-10 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-admm-nlcc.inp b/tests/QS/regtest-acc-2/HF-admm-nlcc.inp new file mode 100644 index 0000000000..da72971e5b --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-admm-nlcc.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME NLCC_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB DZVP-MOLOPT-SR-GTH + BASIS_SET AUX_FIT pfit3 + POTENTIAL GTH-NLCC-PBE-q1 + &END KIND + &KIND F + BASIS_SET ORB DZVP-MOLOPT-SR-GTH + BASIS_SET AUX_FIT pfit3 + POTENTIAL GTH-NLCC-PBE-q7 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec1.inp b/tests/QS/regtest-acc-2/HF-ec1.inp new file mode 100644 index 0000000000..b1a116bb9e --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec1.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + ENERGY_FUNCTIONAL DCDFT + HARRIS_BASIS ORBITAL + &RESPONSE_SOLVER + EPS 1.E-8 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL TPSS + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec2.inp b/tests/QS/regtest-acc-2/HF-ec2.inp new file mode 100644 index 0000000000..1b5e395054 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec2.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + ENERGY_FUNCTIONAL DCDFT + HARRIS_BASIS ORBITAL + &RESPONSE_SOLVER + EPS 1.E-8 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec3.inp b/tests/QS/regtest-acc-2/HF-ec3.inp new file mode 100644 index 0000000000..7610497598 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec3.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + DEBUG_EXTERNAL_METHOD T + ENERGY_FUNCTIONAL EXTERNAL + &RESPONSE_SOLVER + EPS 1.E-8 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &END ENERGY_CORRECTION + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec4.inp b/tests/QS/regtest-acc-2/HF-ec4.inp new file mode 100644 index 0000000000..1f2fe038a1 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec4.inp @@ -0,0 +1,87 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT N2 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES T + DEBUG_STRESS_TENSOR F + DX 0.001 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &ENERGY_CORRECTION + DEBUG_FORCES + ENERGY_FUNCTIONAL DCDFT + &RESPONSE_SOLVER + EPS 1.0E-08 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL TPSS + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 200 + REL_CUTOFF 50 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 100 + SCF_GUESS ATOMIC + &OT + LINESEARCH ADAPT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &HF + &END HF + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES ON + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.650000 + N 0.000000 0.000000 -0.650000 + &END COORD + &KIND N + BASIS_SET ORB DZVP-MOLOPT-GGA-GTH-q5 + BASIS_SET AUX_FIT admm-dzp-q5 + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec5.inp b/tests/QS/regtest-acc-2/HF-ec5.inp new file mode 100644 index 0000000000..ec54704d90 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec5.inp @@ -0,0 +1,88 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT N2 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES T + DEBUG_STRESS_TENSOR F + DX 0.001 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &ENERGY_CORRECTION + ADMM + DEBUG_FORCES + ENERGY_FUNCTIONAL DCDFT + &RESPONSE_SOLVER + EPS 1.0E-08 + METHOD MO_SOLVER + PRECONDITIONER FULL_SINGLE_INVERSE + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL TPSS + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 200 + REL_CUTOFF 50 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 100 + SCF_GUESS ATOMIC + &OT + LINESEARCH ADAPT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &HF + &END HF + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES ON + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.650000 + N 0.000000 0.000000 -0.650000 + &END COORD + &KIND N + BASIS_SET ORB DZVP-MOLOPT-GGA-GTH-q5 + BASIS_SET AUX_FIT admm-dzp-q5 + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec6.inp b/tests/QS/regtest-acc-2/HF-ec6.inp new file mode 100644 index 0000000000..05b75add10 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec6.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT N2 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES T + DEBUG_STRESS_TENSOR F + DX 0.0002 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_ADMM_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + DEBUG_FORCES + ENERGY_FUNCTIONAL DCDFT + &RESPONSE_SOLVER + EPS 1.0E-08 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 300 + REL_CUTOFF 60 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 100 + SCF_GUESS ATOMIC + &OT + LINESEARCH ADAPT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES ON + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.650000 + N 0.000000 0.000000 -0.650000 + &END COORD + &KIND N + BASIS_SET ORB admm-dzp-q5 + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-ec7.inp b/tests/QS/regtest-acc-2/HF-ec7.inp new file mode 100644 index 0000000000..35bb189207 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-ec7.inp @@ -0,0 +1,79 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT N2 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES T + DEBUG_STRESS_TENSOR F + DX 0.001 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_ADMM_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + DEBUG_FORCES + ENERGY_FUNCTIONAL DCDFT + &RESPONSE_SOLVER + EPS 1.0E-08 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 200 + REL_CUTOFF 50 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 100 + SCF_GUESS ATOMIC + &OT + LINESEARCH ADAPT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &END SCF + &XC + &HF + &END HF + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES ON + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.650000 + N 0.000000 0.000000 -0.650000 + &END COORD + &KIND N + BASIS_SET ORB admm-dzp-q5 + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-nlcc.inp b/tests/QS/regtest-acc-2/HF-nlcc.inp new file mode 100644 index 0000000000..df051c3107 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-nlcc.inp @@ -0,0 +1,73 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT HF-nlcc + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.0002 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT + POTENTIAL_FILE_NAME NLCC_POTENTIALS + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + ALPHA_WEIGHTS 6.0 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 8 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 8 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET ORB SZV-MOLOPT-SR-GTH + POTENTIAL GTH-NLCC-PBE-q1 + &END KIND + &KIND F + BASIS_SET ORB SZV-MOLOPT-SR-GTH + POTENTIAL GTH-NLCC-PBE-q7 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/HF-uf1.inp b/tests/QS/regtest-acc-2/HF-uf1.inp new file mode 100644 index 0000000000..63fdcd89b0 --- /dev/null +++ b/tests/QS/regtest-acc-2/HF-uf1.inp @@ -0,0 +1,92 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT HF + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + LSD + POTENTIAL_FILE_NAME POTENTIAL_UZH + &ENERGY_CORRECTION + ENERGY_FUNCTIONAL DCDFT + HARRIS_BASIS ORBITAL + &RESPONSE_SOLVER + EPS 1.E-8 + METHOD MO_SOLVER + PRECONDITIONER FULL_ALL + &END RESPONSE_SOLVER + &XC + &XC_FUNCTIONAL + &MGGA_C_TPSS + &END MGGA_C_TPSS + &MGGA_X_TPSS + &END MGGA_X_TPSS + &END XC_FUNCTIONAL + &END XC + &END ENERGY_CORRECTION + &MGRID + CUTOFF 240 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS atomic + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.05 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &SUBSYS + &CELL + ABC 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + H 0.000000 0.000000 0.470000 + F 0.000000 0.000000 -0.510000 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND F + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/TEST_FILES.toml b/tests/QS/regtest-acc-2/TEST_FILES.toml new file mode 100644 index 0000000000..4e598c3a65 --- /dev/null +++ b/tests/QS/regtest-acc-2/TEST_FILES.toml @@ -0,0 +1,20 @@ +# +"HF-nlcc.inp" = [] +"HF-admm-nlcc.inp" = [] +# +"h2o_p1.inp" = [{matcher="M087", tol=1e-05, ref=0.161404623690E+02}] +"h2o_p2.inp" = [{matcher="M087", tol=1e-05, ref=19.2915637877}] +"h2o_p3.inp" = [{matcher="M060", tol=1e-05, ref=0.73496007721}] +"h2o_p4.inp" = [{matcher="M060", tol=1e-05, ref=0.713322848135}] +"h2o_p5.inp" = [{matcher="M087", tol=1e-05, ref=0.210113376796E+02}] +# +"HF-ec1.inp" = [] +"HF-ec2.inp" = [] +"HF-ec3.inp" = [] +"HF-ec4.inp" = [] +"HF-ec5.inp" = [] +"HF-ec6.inp" = [] +"HF-ec7.inp" = [] +# +"HF-uf1.inp" = [] +#EOF diff --git a/tests/QS/regtest-acc-2/h2o_p1.inp b/tests/QS/regtest-acc-2/h2o_p1.inp new file mode 100644 index 0000000000..8bea80a879 --- /dev/null +++ b/tests/QS/regtest-acc-2/h2o_p1.inp @@ -0,0 +1,88 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2Op + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + DE 0.002 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + EPS_NO_ERROR_CHECK 5.e-5 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + &EFIELD + &END EFIELD + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.e-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL Pade + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &LINRES + EPS 1.e-10 + PRECONDITIONER FULL_ALL + &POLAR + DO_RAMAN T + PERIODIC_DIPOLE_OPERATOR F + &END POLAR + &END LINRES + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZV-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/h2o_p2.inp b/tests/QS/regtest-acc-2/h2o_p2.inp new file mode 100644 index 0000000000..7768d806c9 --- /dev/null +++ b/tests/QS/regtest-acc-2/h2o_p2.inp @@ -0,0 +1,90 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2Op + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + DE 0.002 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + EPS_NO_ERROR_CHECK 5.e-5 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &EFIELD + &END EFIELD + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.e-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL Pade + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &LINRES + EPS 1.e-8 + PRECONDITIONER FULL_ALL + &POLAR + DO_RAMAN T + PERIODIC_DIPOLE_OPERATOR F + &END POLAR + &END LINRES + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/h2o_p3.inp b/tests/QS/regtest-acc-2/h2o_p3.inp new file mode 100644 index 0000000000..aa0642a25c --- /dev/null +++ b/tests/QS/regtest-acc-2/h2o_p3.inp @@ -0,0 +1,87 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2Op + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME ALL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL_UZH + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.e-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &HF + &MEMORY + MAX_MEMORY 256 + &END MEMORY + &SCREENING + EPS_SCHWARZ 1.E-6 + &END SCREENING + &END HF + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &LINRES + EPS 1.e-10 + PRECONDITIONER FULL_ALL + &POLAR + DO_RAMAN T + PERIODIC_DIPOLE_OPERATOR F + &END POLAR + &END LINRES + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET SVP-MOLOPT-GGA-ae + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/h2o_p4.inp b/tests/QS/regtest-acc-2/h2o_p4.inp new file mode 100644 index 0000000000..ca75846fd9 --- /dev/null +++ b/tests/QS/regtest-acc-2/h2o_p4.inp @@ -0,0 +1,89 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2Op + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_ae + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EFIELD + &END EFIELD + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.e-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &LINRES + EPS 1.e-10 + PRECONDITIONER FULL_ALL + &POLAR + DO_RAMAN T + PERIODIC_DIPOLE_OPERATOR F + &END POLAR + &END LINRES + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.5 4.5 4.5 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET SVP-MOLOPT-GGA-ae + BASIS_SET AUX_FIT admm-1 + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-2/h2o_p5.inp b/tests/QS/regtest-acc-2/h2o_p5.inp new file mode 100644 index 0000000000..c17cb1d599 --- /dev/null +++ b/tests/QS/regtest-acc-2/h2o_p5.inp @@ -0,0 +1,99 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2Op + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + DE 0.002 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + EPS_NO_ERROR_CHECK 5.e-5 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_MOLOPT_UZH + BASIS_SET_FILE_NAME BASIS_ADMM_UZH + POTENTIAL_FILE_NAME POTENTIAL_UZH + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC PBEX + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EFIELD + &END EFIELD + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.e-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL Pade + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &LINRES + EPS 1.e-10 + PRECONDITIONER FULL_ALL + &POLAR + DO_RAMAN T + PERIODIC_DIPOLE_OPERATOR F + &END POLAR + &END LINRES + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET TZVP-MOLOPT-GGA-GTH-q1 + BASIS_SET AUX_FIT admm-dzp-q1 + POTENTIAL GTH-GGA-q1 + &END KIND + &KIND O + BASIS_SET TZVP-MOLOPT-GGA-GTH-q6 + BASIS_SET AUX_FIT admm-dzp-q6 + POTENTIAL GTH-GGA-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_1.inp b/tests/QS/regtest-acc-3/H2O_GAPW_1.inp new file mode 100644 index 0000000000..b4214a52f5 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_1.inp @@ -0,0 +1,92 @@ +##REFERENCE## +# To get close to the reference you need a larger box, stricter convergence and +# better converged integrals +# +# PBE +# HF Energy -76.3600550759 +# +# Excited State 1: Singlet-B1 7.0944 eV 174.76 nm f=0.0271 =0.000 +# 5 -> 6 0.70668 +# Excited State 2: Singlet-A2 8.9854 eV 137.98 nm f=0.0000 =0.000 +# 5 -> 7 0.70699 +# Excited State 3: Singlet-A1 9.3872 eV 132.08 nm f=0.0899 =0.000 +# 4 -> 6 0.70208 +# +# PBE0 +# HF Energy -76.3624232785 +# +# Excited State 1: Singlet-B1 7.7365 eV 160.26 nm f=0.0285 =0.000 +# 5 -> 6 0.70657 +# Excited State 2: Singlet-A2 9.6344 eV 128.69 nm f=0.0000 =0.000 +# 5 -> 7 0.70484 +# Excited State 3: Singlet-A1 10.0954 eV 122.81 nm f=0.0955 =0.000 +# 4 -> 6 0.70276 +############# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 300 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_1_triplet.inp b/tests/QS/regtest-acc-3/H2O_GAPW_1_triplet.inp new file mode 100644 index 0000000000..bd3542378e --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_1_triplet.inp @@ -0,0 +1,78 @@ +# +# PBE ENERGY : -76.3600550759 +# TDA Triplets +# Excited State 1: Triplet-B1 6.5020 eV 190.69 nm f=0.0000 =2.000 +# 5 -> 6 0.70683 +# Excited State 2: Triplet-A1 8.5315 eV 145.32 nm f=0.0000 =2.000 +# 4 -> 6 0.70572 +# Excited State 3: Triplet-A2 8.5956 eV 144.24 nm f=0.0000 =2.000 +# 5 -> 7 0.70664 +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + RKS_TRIPLETS T + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.117226 H2O + H 0.000000 -0.757136 -0.468906 H2O + H 0.000000 0.757136 -0.468906 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_2.inp b/tests/QS/regtest-acc-3/H2O_GAPW_2.inp new file mode 100644 index 0000000000..dba6807260 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_2.inp @@ -0,0 +1,85 @@ +##REFERENCE## +# +# PBE +# HF Energy -76.3600550759 +# +# Excited State 1: Singlet-B1 7.0944 eV 174.76 nm f=0.0271 =0.000 +# 5 -> 6 0.70668 +# Excited State 2: Singlet-A2 8.9854 eV 137.98 nm f=0.0000 =0.000 +# 5 -> 7 0.70699 +# Excited State 3: Singlet-A1 9.3872 eV 132.08 nm f=0.0899 =0.000 +# 4 -> 6 0.70208 +# +# PBE0 +# HF Energy -76.3624232785 +# +# Excited State 1: Singlet-B1 7.7365 eV 160.26 nm f=0.0285 =0.000 +# 5 -> 6 0.70657 +# Excited State 2: Singlet-A2 9.6344 eV 128.69 nm f=0.0000 =0.000 +# 5 -> 7 0.70484 +# Excited State 3: Singlet-A1 10.0954 eV 122.81 nm f=0.0955 =0.000 +# 4 -> 6 0.70276 +############# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_3.inp b/tests/QS/regtest-acc-3/H2O_GAPW_3.inp new file mode 100644 index 0000000000..7628260ce0 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_3.inp @@ -0,0 +1,93 @@ +##REFERENCE## +# +# PBE +# HF Energy -76.3600550759 +# +# Excited State 1: Singlet-B1 7.0944 eV 174.76 nm f=0.0271 =0.000 +# 5 -> 6 0.70668 +# Excited State 2: Singlet-A2 8.9854 eV 137.98 nm f=0.0000 =0.000 +# 5 -> 7 0.70699 +# Excited State 3: Singlet-A1 9.3872 eV 132.08 nm f=0.0899 =0.000 +# 4 -> 6 0.70208 +# +# PBE0 +# HF Energy -76.3624232785 +# +# Excited State 1: Singlet-B1 7.7365 eV 160.26 nm f=0.0285 =0.000 +# 5 -> 6 0.70657 +# Excited State 2: Singlet-A2 9.6344 eV 128.69 nm f=0.0000 =0.000 +# 5 -> 7 0.70484 +# Excited State 3: Singlet-A1 10.0954 eV 122.81 nm f=0.0955 =0.000 +# 4 -> 6 0.70276 +############# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + METHOD basis_projection + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + ##ADMM_KERNEL_CORRECTION_SYMMETRIC + NSTATES 3 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + BASIS_SET AUX_FIT 3-21Gx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + BASIS_SET AUX_FIT 3-21Gx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_4.inp b/tests/QS/regtest-acc-3/H2O_GAPW_4.inp new file mode 100644 index 0000000000..abd4664b7f --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_4.inp @@ -0,0 +1,80 @@ +# References GPW +# +# 1 8.25275 eV +# 2 10.24447 eV +# 3 10.44004 eV +# +# References GAPW +# 1 8.27031 eV +# 2 10.28919 eV +# 3 10.46240 eV +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW_XC + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + NGRIDS 4 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_5.inp b/tests/QS/regtest-acc-3/H2O_GAPW_5.inp new file mode 100644 index 0000000000..9ba59a9db8 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_5.inp @@ -0,0 +1,69 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + NGRIDS 4 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_6.inp b/tests/QS/regtest-acc-3/H2O_GAPW_6.inp new file mode 100644 index 0000000000..12d880c111 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_6.inp @@ -0,0 +1,72 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + METHOD basis_projection + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 200 + NGRIDS 4 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB 6-311Gxx + BASIS_SET AUX_FIT 3-21Gx + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET ORB 6-311Gxx + BASIS_SET AUX_FIT 3-21Gx + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_XC_1.inp b/tests/QS/regtest-acc-3/H2O_GAPW_XC_1.inp new file mode 100644 index 0000000000..8e7c24eccb --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_XC_1.inp @@ -0,0 +1,82 @@ +# References GPW +# 1 8.25275 eV +# 2 10.24447 eV +# 3 10.44004 eV +# +# References GAPW +# 1 8.27031 eV +# 2 10.28919 eV +# 3 10.46240 eV +# +# References GAPW +# 1 8.27117 eV +# 2 10.29085 eV +# 3 10.46211 eV +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW_XC + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 400 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_XC_2.inp b/tests/QS/regtest-acc-3/H2O_GAPW_XC_2.inp new file mode 100644 index 0000000000..73c7ae44b6 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_XC_2.inp @@ -0,0 +1,73 @@ +# References GAPW +# 1 11.27853 eV +# 2 13.39715 eV +# 3 13.46784 eV +# +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW_XC + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 400 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_XC_3.inp b/tests/QS/regtest-acc-3/H2O_GAPW_XC_3.inp new file mode 100644 index 0000000000..5aef6be2e2 --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_XC_3.inp @@ -0,0 +1,79 @@ +# References GAPW +# 1 11.71610 eV +# 2 13.74523 eV +# 3 13.81581 eV +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW_XC + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD none + EXCH_CORRECTION_FUNC NONE + METHOD basis_projection + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 320 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB DZVP-GTH-PADE + BASIS_SET AUX_FIT SZV-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET ORB DZVP-GTH-PADE + BASIS_SET AUX_FIT SZV-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/H2O_GAPW_XC_4.inp b/tests/QS/regtest-acc-3/H2O_GAPW_XC_4.inp new file mode 100644 index 0000000000..aed07809da --- /dev/null +++ b/tests/QS/regtest-acc-3/H2O_GAPW_XC_4.inp @@ -0,0 +1,81 @@ +# References GAPW +# 1 11.71610 eV +# 2 13.74523 eV +# 3 13.81581 eV +# +&GLOBAL + PRINT_LEVEL LOW + PROJECT H2O_GAPW_XC + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD none + EXCH_CORRECTION_FUNC NONE + METHOD basis_projection + &END AUXILIARY_DENSITY_MATRIX_METHOD + &MGRID + CUTOFF 200 + NGRIDS 4 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + MAX_SCF 40 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 10 + NSTATES 3 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 H2O + H 0.000000 -0.757136 0.520545 H2O + H 0.000000 0.757136 0.520545 H2O + &END COORD + &KIND H + BASIS_SET ORB DZVP-GTH-PADE + BASIS_SET AUX_FIT SZV-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET ORB DZVP-GTH-PADE + BASIS_SET AUX_FIT SZV-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/Ne_GAPW_triplet.inp b/tests/QS/regtest-acc-3/Ne_GAPW_triplet.inp new file mode 100644 index 0000000000..e76fe8f662 --- /dev/null +++ b/tests/QS/regtest-acc-3/Ne_GAPW_triplet.inp @@ -0,0 +1,77 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT Ne + RUN_TYPE ENERGY +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME EMSL_BASIS_SETS + BASIS_SET_FILE_NAME basis + POTENTIAL_FILE_NAME POTENTIAL + &MGRID + CUTOFF 200 + REL_CUTOFF 80 + &END MGRID + &POISSON + PERIODIC NONE + PSOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.0E-17 + EPS_PGF_ORB 1.0E-20 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS RESTART + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + 2ND_DERIV_ANALYTICAL T + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE 1.0e-5 + MAX_ITER 10 + MAX_KV 60 + NSTATES 1 + RKS_TRIPLETS T + &DIPOLE_MOMENTS + DIPOLE_FORM LENGTH + &END DIPOLE_MOMENTS + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + 2ND_DERIV_ANALYTICAL T + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + Ne 2.5 2.5 2.5 + &END COORD + &KIND Ne + BASIS_SET Ahlrichs-def2-SVP + POTENTIAL ALL + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-3/TEST_FILES.toml b/tests/QS/regtest-acc-3/TEST_FILES.toml new file mode 100644 index 0000000000..1a5cc12955 --- /dev/null +++ b/tests/QS/regtest-acc-3/TEST_FILES.toml @@ -0,0 +1,19 @@ +# 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_GAPW_1.inp" = [{matcher="M037", tol=4.0E-06, ref=0.549263E+00}] +"H2O_GAPW_2.inp" = [{matcher="M037", tol=4.0E-06, ref=0.591112E+00}] +"H2O_GAPW_3.inp" = [{matcher="M037", tol=4.0E-06, ref=0.609537E+00}] +"H2O_GAPW_4.inp" = [{matcher="M037", tol=4.0E-06, ref=0.619726E+00}] +"H2O_GAPW_5.inp" = [{matcher="M037", tol=4.0E-06, ref=0.549152E+00}] +"H2O_GAPW_6.inp" = [{matcher="M037", tol=4.0E-06, ref=0.609537E+00}] +"H2O_GAPW_XC_1.inp" = [{matcher="M037", tol=4.0E-06, ref=0.619753E+00}] +"H2O_GAPW_XC_2.inp" = [{matcher="M037", tol=4.0E-06, ref=0.812844E+00}] +"H2O_GAPW_XC_3.inp" = [{matcher="M037", tol=4.0E-06, ref=0.845355E+00}] +"H2O_GAPW_XC_4.inp" = [{matcher="M037", tol=4.0E-06, ref=0.845366E+00}] +"H2O_GAPW_1_triplet.inp" = [{matcher="M037", tol=4.0E-06, ref=0.509938E+00}] +"Ne_GAPW_triplet.inp" = [{matcher="M037", tol=4.0E-06, ref=0.166970E+01}] +#EOF diff --git a/tests/QS/regtest-acc-4/TEST_FILES.toml b/tests/QS/regtest-acc-4/TEST_FILES.toml new file mode 100644 index 0000000000..f0c011fc40 --- /dev/null +++ b/tests/QS/regtest-acc-4/TEST_FILES.toml @@ -0,0 +1,15 @@ +# +"h2o_dip40.inp" = [] +"h2o_dip41.inp" = [] +"h2o_dip42.inp" = [] +"ch2o_dip45.inp" = [] +"ch2o_dip46.inp" = [] +"ch2o_dip47.inp" = [] +"ch2o_dip48.inp" = [] +"h2o_xc_dip40.inp" = [] +"h2o_xc_dip41.inp" = [] +"h2o_xc_dip42.inp" = [] +"ch2o_xc_dip45.inp" = [] +"ch2o_xc_dip46.inp" = [] +"ch2o_xc_dip47.inp" = [] +#EOF diff --git a/tests/QS/regtest-acc-4/ch2o_dip45.inp b/tests/QS/regtest-acc-4/ch2o_dip45.inp new file mode 100644 index 0000000000..be1b53d627 --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_dip45.inp @@ -0,0 +1,104 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-6 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.895642 + C 0.000000 0.000000 -0.307326 + H 0.000000 0.947608 -0.895642 + H 0.000000 -0.947608 -0.895562 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_dip46.inp b/tests/QS/regtest-acc-4/ch2o_dip46.inp new file mode 100644 index 0000000000..320985f084 --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_dip46.inp @@ -0,0 +1,100 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-6 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.895642 + C 0.000000 0.000000 -0.307326 + H 0.000000 0.947608 -0.895642 + H 0.000000 -0.947608 -0.895562 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_dip47.inp b/tests/QS/regtest-acc-4/ch2o_dip47.inp new file mode 100644 index 0000000000..d89f7c155f --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_dip47.inp @@ -0,0 +1,103 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + ADMM_KERNEL_CORRECTION_SYMMETRIC + CONVERGENCE [eV] 1.0E-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-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 + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_dip48.inp b/tests/QS/regtest-acc-4/ch2o_dip48.inp new file mode 100644 index 0000000000..98b0d72545 --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_dip48.inp @@ -0,0 +1,104 @@ +&GLOBAL + PRINT_LEVEL low + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC DEFAULT_LIBXC + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + ADMM_KERNEL_CORRECTION_SYMMETRIC + ADMM_KERNEL_XC_CORRECTION F + CONVERGENCE [eV] 1.0E-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-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 + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_xc_dip45.inp b/tests/QS/regtest-acc-4/ch2o_xc_dip45.inp new file mode 100644 index 0000000000..8d403ebb86 --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_xc_dip45.inp @@ -0,0 +1,104 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-6 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.895642 + C 0.000000 0.000000 -0.307326 + H 0.000000 0.947608 -0.895642 + H 0.000000 -0.947608 -0.895562 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_xc_dip46.inp b/tests/QS/regtest-acc-4/ch2o_xc_dip46.inp new file mode 100644 index 0000000000..30d79b161d --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_xc_dip46.inp @@ -0,0 +1,100 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-6 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.895642 + C 0.000000 0.000000 -0.307326 + H 0.000000 0.947608 -0.895642 + H 0.000000 -0.947608 -0.895562 + &END COORD + &KIND H + BASIS_SET DZV-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/ch2o_xc_dip47.inp b/tests/QS/regtest-acc-4/ch2o_xc_dip47.inp new file mode 100644 index 0000000000..19567fe671 --- /dev/null +++ b/tests/QS/regtest-acc-4/ch2o_xc_dip47.inp @@ -0,0 +1,103 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.0005 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + ADMM_KERNEL_CORRECTION_SYMMETRIC + CONVERGENCE [eV] 1.0E-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-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 + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_dip40.inp b/tests/QS/regtest-acc-4/h2o_dip40.inp new file mode 100644 index 0000000000..ea19d3c552 --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_dip40.inp @@ -0,0 +1,94 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-7 + KERNEL NONE + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_dip41.inp b/tests/QS/regtest-acc-4/h2o_dip41.inp new file mode 100644 index 0000000000..cec8ba2c3f --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_dip41.inp @@ -0,0 +1,98 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_dip42.inp b/tests/QS/regtest-acc-4/h2o_dip42.inp new file mode 100644 index 0000000000..7632051c87 --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_dip42.inp @@ -0,0 +1,99 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.00000 0.00000 0.11779 + H 0.00000 0.75545 -0.47116 + H 0.00000 -0.75545 -0.47116 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_xc_dip40.inp b/tests/QS/regtest-acc-4/h2o_xc_dip40.inp new file mode 100644 index 0000000000..913417c281 --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_xc_dip40.inp @@ -0,0 +1,94 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-7 + KERNEL NONE + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_xc_dip41.inp b/tests/QS/regtest-acc-4/h2o_xc_dip41.inp new file mode 100644 index 0000000000..0e50b042d6 --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_xc_dip41.inp @@ -0,0 +1,98 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.002 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-4/h2o_xc_dip42.inp b/tests/QS/regtest-acc-4/h2o_xc_dip42.inp new file mode 100644 index 0000000000..58fc2cb068 --- /dev/null +++ b/tests/QS/regtest-acc-4/h2o_xc_dip42.inp @@ -0,0 +1,99 @@ +&GLOBAL + PRINT_LEVEL medium + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.001 + DEBUG_DIPOLE .TRUE. + DEBUG_FORCES .FALSE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.0E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0E-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.00000 0.00000 0.11779 + H 0.00000 0.75545 -0.47116 + H 0.00000 -0.75545 -0.47116 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/TEST_FILES.toml b/tests/QS/regtest-acc-5/TEST_FILES.toml new file mode 100644 index 0000000000..d766b1c922 --- /dev/null +++ b/tests/QS/regtest-acc-5/TEST_FILES.toml @@ -0,0 +1,31 @@ +# 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_f01.inp" = [{matcher="M037", tol=1.0E-4, ref=0.138486E+00}] +"h2o_f01_coulomb_only.inp" = [{matcher="M037", tol=1.0E-4, ref=1.012588E+00}] +"h2o_f01_pbe_gapwxc.inp" = [{matcher="M037", tol=1.0E-4, ref=0.138495E+00}] +"h2o_f01_pbe.inp" = [{matcher="M037", tol=1.0E-4, ref=0.141293E+00}] +"h2o_f02_coulomb_only.inp" = [{matcher="M037", tol=1.0E-4, ref=0.202091E+00}] +"h2o_t01.inp" = [] +"h2o_t02.inp" = [] +"h2o_t03.inp" = [] +"h2o_t04.inp" = [] +"h2o_t05.inp" = [] +"h2o_t06.inp" = [] +"h2o_t07.inp" = [] +"h2o_t08.inp" = [] +"h2o_t09.inp" = [] +"h2o_t10.inp" = [] +"h2o_t11.inp" = [] +"h2o_t12.inp" = [] +# +"bnt1.inp" = [] +"bnt2.inp" = [] +"bnt3.inp" = [] +# +"ft1.inp" = [] +"ft2.inp" = [] +"ft3.inp" = [] +#EOF diff --git a/tests/QS/regtest-acc-5/bnt1.inp b/tests/QS/regtest-acc-5/bnt1.inp new file mode 100644 index 0000000000..05a6b7cbca --- /dev/null +++ b/tests/QS/regtest-acc-5/bnt1.inp @@ -0,0 +1,83 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT bn_test + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD QS + &DFT + BASIS_SET_FILE_NAME GTH_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL_UZH + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 240 + REL_CUTOFF 60 + &END MGRID + &QS + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-10 + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.E-6 + MAX_SCF 30 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.00 5.00 5.00 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.737566 + B 0.000000 0.000000 -0.567357 + H 0.000000 1.056538 -1.163089 + H -0.000000 -1.056538 -1.163089 + &END COORD + &KIND H + BASIS_SET DZV-GTH + POTENTIAL GTH-GGA-q1 + &END KIND + &KIND B + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q3 + &END KIND + &KIND N + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/bnt2.inp b/tests/QS/regtest-acc-5/bnt2.inp new file mode 100644 index 0000000000..834e8d53d6 --- /dev/null +++ b/tests/QS/regtest-acc-5/bnt2.inp @@ -0,0 +1,84 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT bn_test + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD QS + &DFT + BASIS_SET_FILE_NAME GTH_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL_UZH + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 240 + REL_CUTOFF 60 + &END MGRID + &QS + EPSFIT 1.E-4 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-10 + FORCE_PAW + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.E-6 + MAX_SCF 30 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.00 5.00 5.00 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.737566 + B 0.000000 0.000000 -0.567357 + H 0.000000 1.056538 -1.163089 + H -0.000000 -1.056538 -1.163089 + &END COORD + &KIND H + BASIS_SET DZV-GTH + POTENTIAL GTH-GGA-q1 + &END KIND + &KIND B + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q3 + &END KIND + &KIND N + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/bnt3.inp b/tests/QS/regtest-acc-5/bnt3.inp new file mode 100644 index 0000000000..d2218730e7 --- /dev/null +++ b/tests/QS/regtest-acc-5/bnt3.inp @@ -0,0 +1,83 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT bn_test + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD QS + &DFT + BASIS_SET_FILE_NAME GTH_BASIS_SETS + POTENTIAL_FILE_NAME POTENTIAL_UZH + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 240 + REL_CUTOFF 60 + &END MGRID + &QS + EPSFIT 1.E-3 + EPSISO 1.E-12 + EPSRHO0 1.E-6 + EPS_DEFAULT 1.E-10 + GAPW_1C_BASIS EXT_SMALL + GAPW_ACCURATE_XCINT T + LMAXN0 4 + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.E-6 + MAX_SCF 30 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC 5.00 5.00 5.00 + PERIODIC NONE + &END CELL + &COORD + N 0.000000 0.000000 0.737566 + B 0.000000 0.000000 -0.567357 + H 0.000000 1.056538 -1.163089 + H -0.000000 -1.056538 -1.163089 + &END COORD + &KIND H + BASIS_SET DZV-GTH + POTENTIAL GTH-GGA-q1 + &END KIND + &KIND B + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q3 + &END KIND + &KIND N + BASIS_SET DZVP-GTH + POTENTIAL GTH-GGA-q5 + &END KIND + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/ft1.inp b/tests/QS/regtest-acc-5/ft1.inp new file mode 100644 index 0000000000..34fe2fa125 --- /dev/null +++ b/tests/QS/regtest-acc-5/ft1.inp @@ -0,0 +1,108 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT cc02 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + MAX_RELATIVE_ERROR 0.05 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC NONE + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 180 + REL_CUTOFF 30 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER WAVELET + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 100 + SCF_GUESS ATOMIC + &END SCF + &XC + &HF + &SCREENING + SCREEN_P_FORCES F + &END SCREENING + &END HF + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-06 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.5 4.5 4.5 + PERIODIC NONE + &END CELL + &COORD + C 0.0000000000 0.0000000000 -0.5265526741 + O 0.0000000000 0.0000000000 0.6555124750 + H 0.0000000000 -0.9325664988 -1.1133424527 + H 0.0000000000 0.9325664988 -1.1133424527 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/ft2.inp b/tests/QS/regtest-acc-5/ft2.inp new file mode 100644 index 0000000000..638d26e431 --- /dev/null +++ b/tests/QS/regtest-acc-5/ft2.inp @@ -0,0 +1,110 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT cc02 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + MAX_RELATIVE_ERROR 0.05 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC LDA_X_LIBXC + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 180 + REL_CUTOFF 30 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &END SCF + &XC + &HF + &SCREENING + SCREEN_P_FORCES F + &END SCREENING + &END HF + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + ADMM_KERNEL_CORRECTION_SYMMETRIC T + ADMM_KERNEL_XC_CORRECTION F + CONVERGENCE [eV] 1.0e-06 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.5 4.5 4.5 + PERIODIC NONE + &END CELL + &COORD + C 0.0000000000 0.0000000000 -0.5265526741 + O 0.0000000000 0.0000000000 0.6555124750 + H 0.0000000000 -0.9325664988 -1.1133424527 + H 0.0000000000 0.9325664988 -1.1133424527 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/ft3.inp b/tests/QS/regtest-acc-5/ft3.inp new file mode 100644 index 0000000000..334f787e02 --- /dev/null +++ b/tests/QS/regtest-acc-5/ft3.inp @@ -0,0 +1,110 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT cc02 + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + MAX_RELATIVE_ERROR 0.05 + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME GTH_POTENTIALS + &AUXILIARY_DENSITY_MATRIX_METHOD + ADMM_PURIFICATION_METHOD NONE + EXCH_CORRECTION_FUNC LDA_X_LIBXC + EXCH_SCALING_MODEL NONE + METHOD BASIS_PROJECTION + &END AUXILIARY_DENSITY_MATRIX_METHOD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 180 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 100 + SCF_GUESS ATOMIC + &END SCF + &XC + &HF + &SCREENING + SCREEN_P_FORCES F + &END SCREENING + &END HF + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + ADMM_KERNEL_CORRECTION_SYMMETRIC T + ADMM_KERNEL_XC_CORRECTION T + CONVERGENCE [eV] 1.0e-06 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS F + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + C 0.0000000000 0.0000000000 -0.5265526741 + O 0.0000000000 0.0000000000 0.6555124750 + H 0.0000000000 -0.9325664988 -1.1133424527 + H 0.0000000000 0.9325664988 -1.1133424527 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + BASIS_SET AUX_FIT cFIT3 + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_f01.inp b/tests/QS/regtest-acc-5/h2o_f01.inp new file mode 100644 index 0000000000..3320440c8f --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_f01.inp @@ -0,0 +1,89 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_dipole + RUN_TYPE ENERGY_FORCE + # RUN_TYPE DEBUG +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + NGRIDS 4 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-15 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS RESTART + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-5 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 1.000000 0.000000 0.000000 + H 0.000000 -0.00 0.520545 + H 0.000000 0.52 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_f01_coulomb_only.inp b/tests/QS/regtest-acc-5/h2o_f01_coulomb_only.inp new file mode 100644 index 0000000000..2176b68de4 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_f01_coulomb_only.inp @@ -0,0 +1,93 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT ftest + RUN_TYPE ENERGY_FORCE +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.0001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + &EXCITED_STATES T + DEBUG_FORCES T + STATE 4 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + REL_CUTOFF 60 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-8 + MAX_SCF 50 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + &END OT + &OUTER_SCF + EPS_SCF 1.0E-8 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PRINT + &FORCES + &END FORCES + &END PRINT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-5 + KERNEL FULL + MAX_ITER 50 + NSTATES 5 + RKS_TRIPLETS F + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.580545 + H 0.000000 0.757136 0.580545 + &END COORD + &KIND H + BASIS_SET DZV-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_f01_pbe.inp b/tests/QS/regtest-acc-5/h2o_f01_pbe.inp new file mode 100644 index 0000000000..fde2ef711f --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_f01_pbe.inp @@ -0,0 +1,99 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_dipole + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 3 y + DE 0.001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. + MAX_RELATIVE_ERROR 0.30 +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 180 + REL_CUTOFF 40 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS RESTART + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.5 4.5 4.5 + PERIODIC NONE + &END CELL + &COORD + O 1.000000 0.000000 0.000000 + H 0.000000 -0.00 0.520545 + H 0.000000 0.52 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_f01_pbe_gapwxc.inp b/tests/QS/regtest-acc-5/h2o_f01_pbe_gapwxc.inp new file mode 100644 index 0000000000..e2e29d1579 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_f01_pbe_gapwxc.inp @@ -0,0 +1,101 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_dipole + RUN_TYPE ENERGY_FORCE + # RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.00001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + REL_CUTOFF 60 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &END PRINT + &QS + EPS_DEFAULT 1.E-15 + GAPW_ACCURATE_XCINT T + METHOD GAPW_XC + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS RESTART + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-5 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 1.000000 0.000000 0.000000 + H 0.000000 -0.00 0.520545 + H 0.000000 0.52 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_f02_coulomb_only.inp b/tests/QS/regtest-acc-5/h2o_f02_coulomb_only.inp new file mode 100644 index 0000000000..cabb499f22 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_f02_coulomb_only.inp @@ -0,0 +1,105 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_dipole + RUN_TYPE ENERGY_FORCE + # RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_DIPOLE_DIRS Z + DE 0.0001 + DEBUG_DIPOLE .FALSE. + DEBUG_FORCES .TRUE. + DEBUG_POLARIZABILITY .FALSE. + DEBUG_STRESS_TENSOR .FALSE. +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EFIELD + &END EFIELD + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 800 + REL_CUTOFF 80 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &PRINT + &MOMENTS ON + PERIODIC .FALSE. + REFERENCE COM + &END MOMENTS + &END PRINT + &QS + EPS_DEFAULT 1.E-14 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_SINGLE_INVERSE + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 4.0 4.0 4.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.52 0.520545 + H 0.000000 0.52 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND C + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q4 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t01.inp b/tests/QS/regtest-acc-5/h2o_t01.inp new file mode 100644 index 0000000000..882c93be48 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t01.inp @@ -0,0 +1,85 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-14 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL NONE + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t02.inp b/tests/QS/regtest-acc-5/h2o_t02.inp new file mode 100644 index 0000000000..754673ab1c --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t02.inp @@ -0,0 +1,85 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-14 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL NONE + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t03.inp b/tests/QS/regtest-acc-5/h2o_t03.inp new file mode 100644 index 0000000000..14cd65eb82 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t03.inp @@ -0,0 +1,85 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-14 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL NONE + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t04.inp b/tests/QS/regtest-acc-5/h2o_t04.inp new file mode 100644 index 0000000000..5b54f8e75f --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t04.inp @@ -0,0 +1,85 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-14 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL STDA + MAX_ITER 50 + NSTATES 1 + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 -0.065587 + H 0.000000 -0.757136 0.520545 + H 0.000000 0.757136 0.520545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t05.inp b/tests/QS/regtest-acc-5/h2o_t05.inp new file mode 100644 index 0000000000..cafc9fab5d --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t05.inp @@ -0,0 +1,80 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 50 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.500545 + H 0.000000 0.757136 0.500545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t06.inp b/tests/QS/regtest-acc-5/h2o_t06.inp new file mode 100644 index 0000000000..3bdf195986 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t06.inp @@ -0,0 +1,89 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 0.758602 0.504284 + H 0.000000 0.758602 -0.504284 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t07.inp b/tests/QS/regtest-acc-5/h2o_t07.inp new file mode 100644 index 0000000000..8b595b5ad9 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t07.inp @@ -0,0 +1,89 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME ALL_BASIS_SETS + POTENTIAL_FILE_NAME ALL_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.500545 + H 0.000000 0.757136 0.500545 + &END COORD + &KIND H + BASIS_SET DZVP-ALL + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET DZVP-ALL + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t08.inp b/tests/QS/regtest-acc-5/h2o_t08.inp new file mode 100644 index 0000000000..ee0125c1bf --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t08.inp @@ -0,0 +1,80 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 50 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.504545 + H 0.000000 0.757136 0.504545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t09.inp b/tests/QS/regtest-acc-5/h2o_t09.inp new file mode 100644 index 0000000000..bc1b63c9c7 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t09.inp @@ -0,0 +1,90 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 10 + SCF_GUESS ATOMIC + &OT + MINIMIZER DIIS + PRECONDITIONER FULL_ALL + STEPSIZE 0.1 + &END OT + &OUTER_SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + &END OUTER_SCF + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS T + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 6.0 6.0 6.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.500545 + H 0.000000 0.757136 0.500545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t10.inp b/tests/QS/regtest-acc-5/h2o_t10.inp new file mode 100644 index 0000000000..3cedac6d3d --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t10.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-8 + MAX_SCF 50 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-8 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS T + &XC + &XC_FUNCTIONAL PADE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.500545 + H 0.000000 0.757136 0.500545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t11.inp b/tests/QS/regtest-acc-5/h2o_t11.inp new file mode 100644 index 0000000000..069cc176cc --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t11.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME ALL_BASIS_SETS + POTENTIAL_FILE_NAME ALL_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 20 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS T + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.500545 + H 0.000000 0.757136 0.500545 + &END COORD + &KIND H + BASIS_SET DZVP-ALL + POTENTIAL ALL + &END KIND + &KIND O + BASIS_SET DZVP-ALL + POTENTIAL ALL + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-acc-5/h2o_t12.inp b/tests/QS/regtest-acc-5/h2o_t12.inp new file mode 100644 index 0000000000..5949986d33 --- /dev/null +++ b/tests/QS/regtest-acc-5/h2o_t12.inp @@ -0,0 +1,81 @@ +&GLOBAL + PRINT_LEVEL LOW + PROJECT td_force + RUN_TYPE DEBUG +&END GLOBAL + +&DEBUG + CHECK_ATOM_FORCE 1 z + DEBUG_FORCES .TRUE. + DEBUG_STRESS_TENSOR .FALSE. + STOP_ON_MISMATCH T +&END DEBUG + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME BASIS_SET + POTENTIAL_FILE_NAME GTH_POTENTIALS + &EXCITED_STATES T + DEBUG_FORCES T + STATE 1 + &END EXCITED_STATES + &MGRID + CUTOFF 200 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER MT + &END POISSON + &QS + EPS_DEFAULT 1.E-10 + GAPW_ACCURATE_XCINT T + METHOD GAPW + &END QS + &SCF + EPS_SCF 1.0E-6 + MAX_SCF 20 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &TDDFPT + CONVERGENCE [eV] 1.0e-7 + KERNEL FULL + MAX_ITER 50 + NSTATES 1 + RKS_TRIPLETS T + &XC + &XC_FUNCTIONAL PBE0 + &END XC_FUNCTIONAL + &END XC + &END TDDFPT + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 5.0 5.0 5.0 + PERIODIC NONE + &END CELL + &COORD + O 0.000000 0.000000 0.000000 + H 0.000000 -0.757136 0.504545 + H 0.000000 0.757136 0.504545 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH-PADE + POTENTIAL GTH-PADE-q6 + &END KIND + &TOPOLOGY + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-gpw-2-2/H2O-tpss.inp b/tests/QS/regtest-gpw-2-2/H2O-tpss.inp index 1f9d2a12f5..2042e0176e 100644 --- a/tests/QS/regtest-gpw-2-2/H2O-tpss.inp +++ b/tests/QS/regtest-gpw-2-2/H2O-tpss.inp @@ -19,7 +19,6 @@ &XC DENSITY_CUTOFF 1.e-9 DENSITY_SMOOTH_CUTOFF_RANGE 0 - FUNCTIONAL_ROUTINE DEFAULT &XC_FUNCTIONAL tpss &END XC_FUNCTIONAL &XC_GRID diff --git a/tests/QS/regtest-gpw-2-2/H2O-tpss_new.inp b/tests/QS/regtest-gpw-2-2/H2O-tpss_new.inp index d5358f8a67..87f7093700 100644 --- a/tests/QS/regtest-gpw-2-2/H2O-tpss_new.inp +++ b/tests/QS/regtest-gpw-2-2/H2O-tpss_new.inp @@ -19,7 +19,6 @@ &XC DENSITY_CUTOFF 1.0e-9 DENSITY_SMOOTH_CUTOFF_RANGE 0 - FUNCTIONAL_ROUTINE DEFAULT &XC_FUNCTIONAL &TPSS &END TPSS diff --git a/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp b/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp index 1ebb9320aa..47553a119e 100644 --- a/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp +++ b/tests/QS/regtest-libxc/H2O-hybrid-cam-lda0.inp @@ -29,7 +29,6 @@ &XC DENSITY_CUTOFF 1.0e-9 DENSITY_SMOOTH_CUTOFF_RANGE 0 - FUNCTIONAL_ROUTINE DEFAULT &HF FRACTION 1.0 &INTERACTION_POTENTIAL diff --git a/tests/QS/regtest-libxc/H2O-tpss_lsd.inp b/tests/QS/regtest-libxc/H2O-tpss_lsd.inp index d0256b0b61..6c22f27354 100644 --- a/tests/QS/regtest-libxc/H2O-tpss_lsd.inp +++ b/tests/QS/regtest-libxc/H2O-tpss_lsd.inp @@ -21,7 +21,6 @@ &XC DENSITY_CUTOFF 1.0e-9 DENSITY_SMOOTH_CUTOFF_RANGE 0 - FUNCTIONAL_ROUTINE DEFAULT &XC_FUNCTIONAL &MGGA_C_TPSS &END MGGA_C_TPSS diff --git a/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp b/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp index bada7a272e..1814ac0a16 100644 --- a/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp +++ b/tests/QS/regtest-libxc/H2O-tpssx_libxc.inp @@ -19,7 +19,6 @@ &XC DENSITY_CUTOFF 1.0e-9 DENSITY_SMOOTH_CUTOFF_RANGE 0 - FUNCTIONAL_ROUTINE DEFAULT &XC_FUNCTIONAL &MGGA_X_TPSS &END MGGA_X_TPSS diff --git a/tests/TEST_DIRS b/tests/TEST_DIRS index 4128a21c55..dce47d519c 100644 --- a/tests/TEST_DIRS +++ b/tests/TEST_DIRS @@ -192,6 +192,11 @@ QS/regtest-dm-ls-scf-1 QS/regtest-ps-implicit-1-1 fftw3 QMMM/QS/regtest-cdft parallel mpiranks%2==0 DFTB/regtest-nonscc +QS/regtest-acc-1 libint !ifx +QS/regtest-acc-2 libint !ifx +QS/regtest-acc-3 libint !ifx +QS/regtest-acc-4 libint !ifx +QS/regtest-acc-5 libint !ifx QS/regtest-tddfpt libint !ifx Fist/regtest-5-vib mpiranks==1||mpiranks%2==0 QS/regtest-tddfpt-lri libint !ifx