mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 22:25:32 -04:00
Several small updates (#1916)
* Replace cp_gemm + fm_to_dbcsr by cp_dbcsr_plus_fm_fm_t in qs_tddfpt2_fhxc * TDDFPT output information of options Prepare for Input of XC kernel and LR HFX TDDFPT input bug fix * TDDFPT stda kernel Ewald default: now depends on CELL periodicity Ewald default dependent on Cell (xTB/DFTB), adjust regtests * Add hfxlr and exck kernel flags * Relax checks for vibrational transformation matrix (detect linear molecules more easily) * Molecular Dipoles from Voronoi Integration Update TEST_DIR dependences * Change Vibrational intensities to KM/Mole units.
This commit is contained in:
parent
2efb191b2d
commit
ff874fcad0
31 changed files with 936 additions and 284 deletions
|
|
@ -328,6 +328,7 @@ MODULE cp_control_types
|
|||
INTEGER :: do_ppl_method
|
||||
INTEGER :: wf_interpolation_method_nr
|
||||
INTEGER :: wf_extrapolation_order
|
||||
INTEGER :: periodicity
|
||||
REAL(KIND=dp) :: cutoff
|
||||
REAL(KIND=dp), DIMENSION(:), POINTER :: e_cutoff
|
||||
TYPE(mulliken_restraint_type), &
|
||||
|
|
@ -443,9 +444,12 @@ MODULE cp_control_types
|
|||
INTEGER :: nprocs
|
||||
!> type of kernel function/approximation to use
|
||||
INTEGER :: kernel
|
||||
!> fro full kernel, do we have HFX/ADMM
|
||||
!> for full kernel, do we have HFX/ADMM
|
||||
LOGICAL :: do_hfx
|
||||
LOGICAL :: do_admm
|
||||
!> for full kernel, do we have long-range HFX and/or Kxc potential
|
||||
LOGICAL :: do_hfxlr
|
||||
LOGICAL :: do_exck
|
||||
!> options used in sTDA calculation (Kernel)
|
||||
TYPE(stda_control_type) :: stda_control
|
||||
!> algorithm to correct orbital energies
|
||||
|
|
|
|||
|
|
@ -1056,8 +1056,13 @@ CONTAINS
|
|||
l_val=qs_control%dftb_control%hb_sr_damp)
|
||||
CALL section_vals_val_get(dftb_section, "EPS_DISP", &
|
||||
r_val=qs_control%dftb_control%eps_disp)
|
||||
CALL section_vals_val_get(dftb_section, "DO_EWALD", &
|
||||
l_val=qs_control%dftb_control%do_ewald)
|
||||
CALL section_vals_val_get(dftb_section, "DO_EWALD", explicit=explicit)
|
||||
IF (explicit) THEN
|
||||
CALL section_vals_val_get(dftb_section, "DO_EWALD", &
|
||||
l_val=qs_control%dftb_control%do_ewald)
|
||||
ELSE
|
||||
qs_control%dftb_control%do_ewald = (qs_control%periodicity /= 0)
|
||||
END IF
|
||||
CALL section_vals_val_get(dftb_parameter, "PARAM_FILE_PATH", &
|
||||
c_val=qs_control%dftb_control%sk_file_path)
|
||||
CALL section_vals_val_get(dftb_parameter, "PARAM_FILE_NAME", &
|
||||
|
|
@ -1095,8 +1100,13 @@ CONTAINS
|
|||
|
||||
! xTB code
|
||||
IF (qs_control%xtb) THEN
|
||||
CALL section_vals_val_get(xtb_section, "DO_EWALD", &
|
||||
l_val=qs_control%xtb_control%do_ewald)
|
||||
CALL section_vals_val_get(xtb_section, "DO_EWALD", explicit=explicit)
|
||||
IF (explicit) THEN
|
||||
CALL section_vals_val_get(xtb_section, "DO_EWALD", &
|
||||
l_val=qs_control%xtb_control%do_ewald)
|
||||
ELSE
|
||||
qs_control%xtb_control%do_ewald = (qs_control%periodicity /= 0)
|
||||
END IF
|
||||
CALL section_vals_val_get(xtb_section, "STO_NG", i_val=ngauss)
|
||||
qs_control%xtb_control%sto_ng = ngauss
|
||||
CALL section_vals_val_get(xtb_section, "HYDROGEN_STO_NG", i_val=ngauss)
|
||||
|
|
@ -1405,7 +1415,19 @@ CONTAINS
|
|||
t_control%stda_control%hfx_fraction = 0.0_dp
|
||||
t_control%stda_control%do_exchange = .TRUE.
|
||||
t_control%stda_control%eps_td_filter = 1.e-10_dp
|
||||
t_control%stda_control%do_ewald = .FALSE.
|
||||
! set default for Ewald method (on/off) dependent on periodicity
|
||||
SELECT CASE (qs_control%periodicity)
|
||||
CASE (0)
|
||||
t_control%stda_control%do_ewald = .FALSE.
|
||||
CASE (1)
|
||||
t_control%stda_control%do_ewald = .TRUE.
|
||||
CASE (2)
|
||||
t_control%stda_control%do_ewald = .TRUE.
|
||||
CASE (3)
|
||||
t_control%stda_control%do_ewald = .TRUE.
|
||||
CASE DEFAULT
|
||||
CPABORT("Illegal value for periodiciy")
|
||||
END SELECT
|
||||
END IF
|
||||
CALL section_vals_get(stda_section, explicit=explicit)
|
||||
IF (explicit) THEN
|
||||
|
|
|
|||
|
|
@ -16,14 +16,13 @@ MODULE input_cp2k_dft
|
|||
basis_sort_zet
|
||||
USE bibliography, ONLY: &
|
||||
Andermatt2016, Andreussi2012, Avezac2005, BaniHashemian2016, Becke1988b, Bengtsson1999, &
|
||||
Blochl1995, Brehm2018, Brehm2020, Brehm2021, Brelaz1979, Dewar1977, Dewar1985, &
|
||||
Dudarev1997, Dudarev1998, Ehrhardt1985, Fattebert2002, Golze2017a, Golze2017b, Guidon2010, &
|
||||
Heinzmann1976, Holmberg2017, Holmberg2018, Iannuzzi2005, Iannuzzi2006, Iannuzzi2007, &
|
||||
Kolafa2004, Krack2000, Krack2002, Kuhne2007, Kunert2003, Lippert1997, Lippert1999, Lu2004, &
|
||||
Perdew1981, Repasky2002, Rocha2006, Rycroft2009, Schenter2008, Schiffmann2015, &
|
||||
Shigeta2001, Stewart1982, Stewart1989, Stewart2007, Thiel1992, Thomas2015, VanVoorhis2015, &
|
||||
VandeVondele2003, VandeVondele2005a, VandeVondele2005b, VandeVondele2006, Weber2008, &
|
||||
Yin2017
|
||||
Blochl1995, Brehm2018, Brelaz1979, Dewar1977, Dewar1985, Dudarev1997, Dudarev1998, &
|
||||
Ehrhardt1985, Fattebert2002, Golze2017a, Golze2017b, Guidon2010, Heinzmann1976, &
|
||||
Holmberg2017, Holmberg2018, Iannuzzi2005, Iannuzzi2006, Iannuzzi2007, Kolafa2004, &
|
||||
Krack2000, Krack2002, Kuhne2007, Kunert2003, Lippert1997, Lippert1999, Lu2004, Perdew1981, &
|
||||
Repasky2002, Rocha2006, Schenter2008, Schiffmann2015, Shigeta2001, Stewart1982, &
|
||||
Stewart1989, Stewart2007, Thiel1992, VanVoorhis2015, VandeVondele2003, VandeVondele2005a, &
|
||||
VandeVondele2005b, VandeVondele2006, Weber2008, Yin2017
|
||||
USE cp_output_handling, ONLY: add_last_numeric,&
|
||||
cp_print_key_section_create,&
|
||||
debug_print_level,&
|
||||
|
|
@ -92,15 +91,14 @@ MODULE input_cp2k_dft
|
|||
slater, smear_energy_window, smear_fermi_dirac, smear_list, sparse_guess, tddfpt_davidson, &
|
||||
tddfpt_excitations, tddfpt_lanczos, tddfpt_singlet, tddfpt_spin_cons, tddfpt_spin_flip, &
|
||||
tddfpt_triplet, use_mom_ref_coac, use_mom_ref_com, use_mom_ref_user, use_mom_ref_zero, &
|
||||
use_restart_wfn, use_rt_restart, use_scf_wfn, voro_radii_cov, voro_radii_unity, &
|
||||
voro_radii_user, voro_radii_vdw, wannier_projection, weight_type_mass, weight_type_unit, &
|
||||
wfi_aspc_nr, wfi_frozen_method_nr, wfi_linear_p_method_nr, wfi_linear_ps_method_nr, &
|
||||
wfi_linear_wf_method_nr, wfi_ps_method_nr, wfi_use_guess_method_nr, &
|
||||
wfi_use_prev_p_method_nr, wfi_use_prev_rho_r_method_nr, wfi_use_prev_wf_method_nr, &
|
||||
xas_1s_type, xas_2p_type, xas_2s_type, xas_3d_type, xas_3p_type, xas_3s_type, xas_4d_type, &
|
||||
xas_4f_type, xas_4p_type, xas_4s_type, xas_dip_len, xas_dip_vel, xas_dscf, xas_none, &
|
||||
xas_not_excited, xas_tdp_by_index, xas_tdp_by_kind, xas_tp_fh, xas_tp_flex, xas_tp_hh, &
|
||||
xas_tp_xfh, xas_tp_xhh, xes_tp_val
|
||||
use_restart_wfn, use_rt_restart, use_scf_wfn, wannier_projection, weight_type_mass, &
|
||||
weight_type_unit, wfi_aspc_nr, wfi_frozen_method_nr, wfi_linear_p_method_nr, &
|
||||
wfi_linear_ps_method_nr, wfi_linear_wf_method_nr, wfi_ps_method_nr, &
|
||||
wfi_use_guess_method_nr, wfi_use_prev_p_method_nr, wfi_use_prev_rho_r_method_nr, &
|
||||
wfi_use_prev_wf_method_nr, xas_1s_type, xas_2p_type, xas_2s_type, xas_3d_type, &
|
||||
xas_3p_type, xas_3s_type, xas_4d_type, xas_4f_type, xas_4p_type, xas_4s_type, xas_dip_len, &
|
||||
xas_dip_vel, xas_dscf, xas_none, xas_not_excited, xas_tdp_by_index, xas_tdp_by_kind, &
|
||||
xas_tp_fh, xas_tp_flex, xas_tp_hh, xas_tp_xfh, xas_tp_xhh, xes_tp_val
|
||||
USE input_cp2k_almo, ONLY: create_almo_scf_section
|
||||
USE input_cp2k_distribution, ONLY: create_distribution_section
|
||||
USE input_cp2k_ec, ONLY: create_ec_section
|
||||
|
|
@ -122,6 +120,7 @@ MODULE input_cp2k_dft
|
|||
USE input_cp2k_tb, ONLY: create_dftb_control_section,&
|
||||
create_xtb_control_section
|
||||
USE input_cp2k_transport, ONLY: create_transport_section
|
||||
USE input_cp2k_voronoi, ONLY: create_print_voronoi_section
|
||||
USE input_cp2k_xc, ONLY: create_xc_fun_section,&
|
||||
create_xc_section
|
||||
USE input_keyword_types, ONLY: keyword_create,&
|
||||
|
|
@ -1311,95 +1310,16 @@ CONTAINS
|
|||
CALL section_release(print_key)
|
||||
|
||||
! Voronoi Integration via LibVori
|
||||
CALL cp_print_key_section_create(print_key, __LOCATION__, name="VORONOI", &
|
||||
description="Controls the Voronoi integration of the total electron density"// &
|
||||
" for the computation of electromagnetic moments, see [Thomas2015],"// &
|
||||
" [Brehm2020], and [Brehm2021] (via LibVori,"// &
|
||||
" see <a href=""https://brehm-research.de/voronoi"" target=""_blank"">"// &
|
||||
" https://brehm-research.de/voronoi</a> ).", &
|
||||
print_level=debug_print_level + 1, filename="", &
|
||||
citations=(/Rycroft2009, Thomas2015, Brehm2018, Brehm2020, Brehm2021/))
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="APPEND", &
|
||||
description="Appends frames to already existing .voronoi file.", &
|
||||
default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SANITY_CHECK", &
|
||||
description="Performs a sanity check before each Voronoi integration, i.e.,"// &
|
||||
" checks if every grid point is located in exactly one Voronoi cell.", &
|
||||
usage="SANITY_CHECK T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OVERWRITE", &
|
||||
description="Specify this keyword to overwrite any existing ""properties.emp"" file if"// &
|
||||
" it already exists. By default, the data is appended to an existing .emp file.", &
|
||||
usage="OVERWRITE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SKIP_FIRST", &
|
||||
description="Skips the first step of a MD run (avoids duplicate step if restarted).", &
|
||||
usage="SKIP_FIRST T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VERBOSE", &
|
||||
description="Switches on verbose screen output of the Voronoi integration.", &
|
||||
usage="VERBOSE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_EMP", &
|
||||
description="Writes the resulting electromagnetic moments to a binary file ""properties.emp""."// &
|
||||
" The file name cannot be changed.", &
|
||||
usage="OUTPUT_EMP T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_TEXT", &
|
||||
description="Writes the resulting electromagnetic moments to text files (*.voronoi)."// &
|
||||
" The file name is specified via FILENAME.", &
|
||||
usage="OUTPUT_TEXT T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="REFINEMENT_FACTOR", &
|
||||
description="Sets the refinement factor for the Voronoi integration.", &
|
||||
usage="REFINEMENT 2", n_var=1, default_i_val=1, type_of_var=integer_t)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VORONOI_RADII", &
|
||||
description="Which atomic radii to use for the radical Voronoi tessellation.", &
|
||||
usage="VORONOI_RADII {UNITY,VDW,COVALENT,USER}", repeats=.FALSE., n_var=1, &
|
||||
default_i_val=voro_radii_vdw, &
|
||||
enum_c_vals=s2a("UNITY", "VDW", "COVALENT", "USER"), &
|
||||
enum_desc=s2a("Use unity radii (non-radical Voronoi tessellation)", "Use VdW atom radii", &
|
||||
"Use covalent atom radii", "Use user-specified atom radii"), &
|
||||
enum_i_vals=(/voro_radii_unity, voro_radii_vdw, voro_radii_cov, voro_radii_user/))
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="USER_RADII", &
|
||||
description="Defines user atom radii for the radical Voronoi tessellation (one per atom).", &
|
||||
usage="USER_RADII {real} {real} {real}", repeats=.FALSE., &
|
||||
unit_str="angstrom", &
|
||||
type_of_var=real_t, n_var=-1)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL create_print_voronoi_section(print_key)
|
||||
CALL section_add_subsection(section, print_key)
|
||||
CALL section_release(print_key)
|
||||
|
||||
! cube files for data generated by the implicit (generalized) Poisson solver
|
||||
! cube files for data generated by the implicit (generalized) Poisson solver
|
||||
CALL create_implicit_psolver_section(subsection)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
! ZMP adding the print section for the v_xc cube
|
||||
! ZMP adding the print section for the v_xc cube
|
||||
CALL cp_print_key_section_create(print_key, __LOCATION__, "v_xc_cube", &
|
||||
description="Controls the printing of a cube file with xc "// &
|
||||
" potential generated by the ZMP method (for the moment). It is "// &
|
||||
|
|
|
|||
|
|
@ -14,11 +14,7 @@
|
|||
MODULE input_cp2k_ec
|
||||
USE bibliography, ONLY: Niklasson2003,&
|
||||
VandeVondele2012,&
|
||||
brehm2018,&
|
||||
brehm2020,&
|
||||
brehm2021,&
|
||||
rycroft2009,&
|
||||
thomas2015
|
||||
brehm2018
|
||||
USE cp_output_handling, ONLY: cp_print_key_section_create,&
|
||||
debug_print_level,&
|
||||
high_print_level
|
||||
|
|
@ -30,9 +26,9 @@ MODULE input_cp2k_ec
|
|||
ls_s_inversion_sign_sqrt, ls_s_preconditioner_atomic, ls_s_preconditioner_molecular, &
|
||||
ls_s_preconditioner_none, ls_s_sqrt_ns, ls_s_sqrt_proot, ls_scf_sign_ns, &
|
||||
ls_scf_sign_proot, ot_precond_full_all, ot_precond_full_kinetic, ot_precond_full_single, &
|
||||
ot_precond_full_single_inverse, ot_precond_none, ot_precond_s_inverse, precond_mlp, &
|
||||
voro_radii_cov, voro_radii_unity, voro_radii_user, voro_radii_vdw
|
||||
ot_precond_full_single_inverse, ot_precond_none, ot_precond_s_inverse, precond_mlp
|
||||
USE input_cp2k_mm, ONLY: create_dipoles_section
|
||||
USE input_cp2k_voronoi, ONLY: create_print_voronoi_section
|
||||
USE input_cp2k_xc, ONLY: create_xc_section
|
||||
USE input_keyword_types, ONLY: keyword_create,&
|
||||
keyword_release,&
|
||||
|
|
@ -43,8 +39,7 @@ MODULE input_cp2k_ec
|
|||
section_release,&
|
||||
section_type
|
||||
USE input_val_types, ONLY: char_t,&
|
||||
integer_t,&
|
||||
real_t
|
||||
integer_t
|
||||
USE kinds, ONLY: dp
|
||||
USE string_utilities, ONLY: s2a
|
||||
#include "./base/base_uses.f90"
|
||||
|
|
@ -595,86 +590,8 @@ CONTAINS
|
|||
CALL section_release(print_key)
|
||||
|
||||
! Voronoi Integration via LibVori
|
||||
CALL cp_print_key_section_create(print_key, __LOCATION__, name="VORONOI", &
|
||||
description="Controls the Voronoi integration of the total electron density"// &
|
||||
" for the computation of electromagnetic moments, see [Thomas2015],"// &
|
||||
" [Brehm2020], and [Brehm2021] (via LibVori,"// &
|
||||
" see <a href=""https://brehm-research.de/voronoi"" target=""_blank"">"// &
|
||||
" https://brehm-research.de/voronoi</a> ).", &
|
||||
print_level=debug_print_level + 1, filename="", &
|
||||
citations=(/Rycroft2009, Thomas2015, Brehm2018, Brehm2020, Brehm2021/))
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="APPEND", &
|
||||
description="Appends frames to already existing .voronoi file.", &
|
||||
default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SANITY_CHECK", &
|
||||
description="Performs a sanity check before each Voronoi integration, i.e.,"// &
|
||||
" checks if every grid point is located in exactly one Voronoi cell.", &
|
||||
usage="SANITY_CHECK T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OVERWRITE", &
|
||||
description="Specify this keyword to overwrite any existing ""properties.emp"" file if"// &
|
||||
" it already exists. By default, the data is appended to an existing .emp file.", &
|
||||
usage="OVERWRITE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SKIP_FIRST", &
|
||||
description="Skips the first step of a MD run (avoids duplicate step if restarted).", &
|
||||
usage="SKIP_FIRST T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VERBOSE", &
|
||||
description="Switches on verbose screen output of the Voronoi integration.", &
|
||||
usage="VERBOSE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_EMP", &
|
||||
description="Writes the resulting electromagnetic moments to a binary file ""properties.emp""."// &
|
||||
" The file name cannot be changed.", &
|
||||
usage="OUTPUT_EMP T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_TEXT", &
|
||||
description="Writes the resulting electromagnetic moments to text files (*.voronoi)."// &
|
||||
" The file name is specified via FILENAME.", &
|
||||
usage="OUTPUT_TEXT T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="REFINEMENT_FACTOR", &
|
||||
description="Sets the refinement factor for the Voronoi integration.", &
|
||||
usage="REFINEMENT 2", n_var=1, default_i_val=1, type_of_var=integer_t)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VORONOI_RADII", &
|
||||
description="Which atomic radii to use for the radical Voronoi tessellation.", &
|
||||
usage="VORONOI_RADII {UNITY,VDW,COVALENT,USER}", repeats=.FALSE., n_var=1, &
|
||||
default_i_val=voro_radii_vdw, &
|
||||
enum_c_vals=s2a("UNITY", "VDW", "COVALENT", "USER"), &
|
||||
enum_desc=s2a("Use unity radii (non-radical Voronoi tessellation)", "Use VdW atom radii", &
|
||||
"Use covalent atom radii", "Use user-specified atom radii"), &
|
||||
enum_i_vals=(/voro_radii_unity, voro_radii_vdw, voro_radii_cov, voro_radii_user/))
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="USER_RADII", &
|
||||
description="Defines user atom radii for the radical Voronoi tessellation (one per atom).", &
|
||||
usage="USER_RADII {real} {real} {real}", repeats=.FALSE., &
|
||||
unit_str="angstrom", &
|
||||
type_of_var=real_t, n_var=-1)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
NULLIFY (print_key)
|
||||
CALL create_print_voronoi_section(print_key)
|
||||
CALL section_add_subsection(section, print_key)
|
||||
CALL section_release(print_key)
|
||||
|
||||
|
|
|
|||
156
src/input_cp2k_voronoi.F
Normal file
156
src/input_cp2k_voronoi.F
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
!--------------------------------------------------------------------------------------------------!
|
||||
! CP2K: A general program to perform molecular dynamics simulations !
|
||||
! Copyright 2000-2022 CP2K developers group <https://cp2k.org> !
|
||||
! !
|
||||
! SPDX-License-Identifier: GPL-2.0-or-later !
|
||||
!--------------------------------------------------------------------------------------------------!
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief function that build the dft section of the input
|
||||
!> \par History
|
||||
!> 10.2005 moved out of input_cp2k [fawzi]
|
||||
!> \author fawzi
|
||||
! **************************************************************************************************
|
||||
MODULE input_cp2k_voronoi
|
||||
USE bibliography, ONLY: Brehm2018,&
|
||||
Brehm2020,&
|
||||
Brehm2021,&
|
||||
Rycroft2009,&
|
||||
Thomas2015
|
||||
USE cp_output_handling, ONLY: cp_print_key_section_create,&
|
||||
debug_print_level
|
||||
USE input_constants, ONLY: voro_radii_cov,&
|
||||
voro_radii_unity,&
|
||||
voro_radii_user,&
|
||||
voro_radii_vdw
|
||||
USE input_keyword_types, ONLY: keyword_create,&
|
||||
keyword_release,&
|
||||
keyword_type
|
||||
USE input_section_types, ONLY: section_add_keyword,&
|
||||
section_type
|
||||
USE input_val_types, ONLY: integer_t,&
|
||||
lchar_t,&
|
||||
real_t
|
||||
USE string_utilities, ONLY: s2a
|
||||
#include "./base/base_uses.f90"
|
||||
|
||||
IMPLICIT NONE
|
||||
PRIVATE
|
||||
|
||||
CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_voronoi'
|
||||
|
||||
PUBLIC :: create_print_voronoi_section
|
||||
|
||||
CONTAINS
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief Create the print voronoi section
|
||||
!> \param print_key ...
|
||||
!> \author Martin Brehm
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE create_print_voronoi_section(print_key)
|
||||
TYPE(section_type), POINTER :: print_key
|
||||
|
||||
TYPE(keyword_type), POINTER :: keyword
|
||||
|
||||
CPASSERT(.NOT. ASSOCIATED(print_key))
|
||||
|
||||
! Voronoi Integration via LibVori
|
||||
CALL cp_print_key_section_create(print_key, __LOCATION__, name="VORONOI", &
|
||||
description="Controls the Voronoi integration of the total electron density"// &
|
||||
" for the computation of electromagnetic moments, see [Thomas2015],"// &
|
||||
" [Brehm2020], and [Brehm2021] (via LibVori,"// &
|
||||
" see <a href=""https://brehm-research.de/voronoi"" target=""_blank"">"// &
|
||||
" https://brehm-research.de/voronoi</a> ).", &
|
||||
print_level=debug_print_level + 1, filename="", &
|
||||
citations=(/Rycroft2009, Thomas2015, Brehm2018, Brehm2020, Brehm2021/))
|
||||
|
||||
NULLIFY (keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="APPEND", &
|
||||
description="Appends frames to already existing .voronoi file.", &
|
||||
default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SANITY_CHECK", &
|
||||
description="Performs a sanity check before each Voronoi integration, i.e.,"// &
|
||||
" checks if every grid point is located in exactly one Voronoi cell.", &
|
||||
usage="SANITY_CHECK T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OVERWRITE", &
|
||||
description="Specify this keyword to overwrite any existing ""properties.emp"" file if"// &
|
||||
" it already exists. By default, the data is appended to an existing .emp file.", &
|
||||
usage="OVERWRITE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SKIP_FIRST", &
|
||||
description="Skips the first step of a MD run (avoids duplicate step if restarted).", &
|
||||
usage="SKIP_FIRST T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VERBOSE", &
|
||||
description="Switches on verbose screen output of the Voronoi integration.", &
|
||||
usage="VERBOSE T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_EMP", &
|
||||
description="Writes the resulting electromagnetic moments to a binary file ""properties.emp""."// &
|
||||
" The file name cannot be changed.", &
|
||||
usage="OUTPUT_EMP T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="OUTPUT_TEXT", &
|
||||
description="Writes the resulting electromagnetic moments to text files (*.voronoi)."// &
|
||||
" The file name is specified via FILENAME.", &
|
||||
usage="OUTPUT_TEXT T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="REFINEMENT_FACTOR", &
|
||||
description="Sets the refinement factor for the Voronoi integration.", &
|
||||
usage="REFINEMENT 2", n_var=1, default_i_val=1, type_of_var=integer_t)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="VORONOI_RADII", &
|
||||
description="Which atomic radii to use for the radical Voronoi tessellation.", &
|
||||
usage="VORONOI_RADII {UNITY,VDW,COVALENT,USER}", repeats=.FALSE., n_var=1, &
|
||||
default_i_val=voro_radii_vdw, &
|
||||
enum_c_vals=s2a("UNITY", "VDW", "COVALENT", "USER"), &
|
||||
enum_desc=s2a("Use unity radii (non-radical Voronoi tessellation)", "Use VdW atom radii", &
|
||||
"Use covalent atom radii", "Use user-specified atom radii"), &
|
||||
enum_i_vals=(/voro_radii_unity, voro_radii_vdw, voro_radii_cov, voro_radii_user/))
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="USER_RADII", &
|
||||
description="Defines user atom radii for the radical Voronoi tessellation (one per atom).", &
|
||||
usage="USER_RADII {real} {real} {real}", repeats=.FALSE., &
|
||||
unit_str="angstrom", &
|
||||
type_of_var=real_t, n_var=-1)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="MOLECULAR_PROPERTIES", &
|
||||
description="Calculation of molecular properties from Voronoi integration.", &
|
||||
usage="MOLECULAR_PROPERTIES T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="MOLPROP_FILE_NAME", &
|
||||
description="Root of the file name where to print molecular properties."// &
|
||||
" filename.molprop is used.", &
|
||||
usage="MOLPROP_FILE_NAME <FILENAME>", &
|
||||
default_lc_val="__STD_OUT__", type_of_var=lchar_t)
|
||||
CALL section_add_keyword(print_key, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
END SUBROUTINE create_print_voronoi_section
|
||||
|
||||
END MODULE input_cp2k_voronoi
|
||||
|
|
@ -837,6 +837,94 @@ CONTAINS
|
|||
END SUBROUTINE create_xc_potential_section
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief creates the structure of the section needed to select an xc kernel
|
||||
!> \param section the section that will be created
|
||||
!> \author JGH
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE create_xc_kernel_section(section)
|
||||
TYPE(section_type), POINTER :: section
|
||||
|
||||
TYPE(keyword_type), POINTER :: keyword
|
||||
TYPE(section_type), POINTER :: subsection
|
||||
|
||||
CPASSERT(.NOT. ASSOCIATED(section))
|
||||
CALL section_create(section, __LOCATION__, name="XC_KERNEL", &
|
||||
description="The xc kernel to use (CAREFUL: xc kernel here refers "// &
|
||||
"to kernels that are not derived from an xc functional, but rather are "// &
|
||||
"modelled directly. This kernel will be used in a TDDFPT calculation. "// &
|
||||
"Cannot be combined with XC_FUNCTIONAL or XC_POTENTIAL.", &
|
||||
n_keywords=1, n_subsections=1, repeats=.FALSE.)
|
||||
|
||||
NULLIFY (subsection, keyword)
|
||||
CALL section_create(subsection, __LOCATION__, name="UZH2022", &
|
||||
description="Uses the UZH2022 xc kernel", &
|
||||
n_keywords=3, n_subsections=0, repeats=.TRUE.)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="ALPHA", &
|
||||
description="Value of the alpha parameter (default = 1.19).", &
|
||||
usage="ALPHA 1.19", default_r_val=1.19_dp)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="BETA", &
|
||||
description="Value of the beta parameter (default = 0.01).", &
|
||||
usage="BETA 0.01", default_r_val=0.01_dp)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SCALE_X", &
|
||||
description="Scaling parameter for exchange kernel.", &
|
||||
usage="SCALE_X 0.2", default_r_val=1.0_dp)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SCALE_C", &
|
||||
description="Scaling parameter for correlation kernel.", &
|
||||
usage="SCALE_C 0.2", default_r_val=1.0_dp)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
END SUBROUTINE create_xc_kernel_section
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief creates the structure of the section needed to select an hfx kernel
|
||||
!> \param section the section that will be created
|
||||
!> \author JGH
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE create_hfx_kernel_section(section)
|
||||
TYPE(section_type), POINTER :: section
|
||||
|
||||
TYPE(keyword_type), POINTER :: keyword
|
||||
TYPE(section_type), POINTER :: subsection
|
||||
|
||||
CPASSERT(.NOT. ASSOCIATED(section))
|
||||
CALL section_create(section, __LOCATION__, name="HFX_KERNEL", &
|
||||
description="The hfx kernel to use. Cannot be combined with HF section.", &
|
||||
n_keywords=1, n_subsections=1, repeats=.FALSE.)
|
||||
|
||||
NULLIFY (subsection, keyword)
|
||||
CALL section_create(subsection, __LOCATION__, name="HFXLR", &
|
||||
description="Uses the HFXLR (longrange) kernel", &
|
||||
n_keywords=3, n_subsections=0, repeats=.TRUE.)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="ALPHA", &
|
||||
description="Value of the alpha parameter (default = 1.19).", &
|
||||
usage="ALPHA 1.19", default_r_val=1.19_dp)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="BETA", &
|
||||
description="Value of the beta parameter (default = 0.01).", &
|
||||
usage="BETA 0.01", default_r_val=0.01_dp)
|
||||
CALL section_add_keyword(subsection, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL keyword_create(keyword, __LOCATION__, name="SCALE", &
|
||||
description="Scaling parameter for HFX kernel.", &
|
||||
usage="SCALE 0.2", default_r_val=1.0_dp)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
END SUBROUTINE create_hfx_kernel_section
|
||||
! **************************************************************************************************
|
||||
!> \brief creates the structure of the section needed for vdW potentials
|
||||
!> \param section the section that will be created
|
||||
!> \author jgh
|
||||
|
|
@ -1281,6 +1369,14 @@ CONTAINS
|
|||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
CALL create_xc_kernel_section(subsection)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
CALL create_hfx_kernel_section(subsection)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
||||
CALL create_vdw_potential_section(subsection)
|
||||
CALL section_add_subsection(section, subsection)
|
||||
CALL section_release(subsection)
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ MODULE molden_utils
|
|||
USE orbital_transformation_matrices, ONLY: orbtramat
|
||||
USE particle_types, ONLY: particle_type
|
||||
USE periodic_table, ONLY: get_ptable_info
|
||||
USE physcon, ONLY: massunit
|
||||
USE qs_kind_types, ONLY: get_qs_kind,&
|
||||
get_qs_kind_set,&
|
||||
qs_kind_type
|
||||
|
|
@ -410,6 +411,7 @@ CONTAINS
|
|||
CHARACTER(LEN=2) :: element_symbol
|
||||
INTEGER :: handle, i, iw, j, k, l, z
|
||||
INTEGER, ALLOCATABLE, DIMENSION(:) :: my_list
|
||||
REAL(KIND=dp) :: fint
|
||||
|
||||
CALL timeset(routineN, handle)
|
||||
|
||||
|
|
@ -472,9 +474,11 @@ CONTAINS
|
|||
END IF
|
||||
END DO
|
||||
IF (calc_intens) THEN
|
||||
fint = massunit
|
||||
! intensity units are a.u./amu
|
||||
WRITE (iw, '(T2,A)') "[INT]"
|
||||
DO i = 1, SIZE(intensities)
|
||||
IF ((.NOT. dump_only_positive) .OR. (freq(i) >= 0._dp)) WRITE (iw, '(3X,F18.6)') intensities(i)
|
||||
IF ((.NOT. dump_only_positive) .OR. (freq(i) >= 0._dp)) WRITE (iw, '(3X,F18.6)') fint*intensities(i)**2
|
||||
END DO
|
||||
END IF
|
||||
DEALLOCATE (my_list)
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@ MODULE vibrational_analysis
|
|||
USE particle_methods, ONLY: write_particle_matrix
|
||||
USE particle_types, ONLY: particle_type
|
||||
USE physcon, ONLY: &
|
||||
a_bohr, boltzmann, e_mass, h_bar, hertz, kelvin, kjmol, massunit, n_avogadro, pascal, &
|
||||
vibfac, wavenumbers
|
||||
a_bohr, bohr, boltzmann, debye, e_mass, h_bar, hertz, kelvin, kjmol, massunit, n_avogadro, &
|
||||
pascal, vibfac, wavenumbers
|
||||
USE replica_methods, ONLY: rep_env_calc_e_f,&
|
||||
rep_env_create
|
||||
USE replica_types, ONLY: rep_env_release,&
|
||||
|
|
@ -656,7 +656,9 @@ CONTAINS
|
|||
CHARACTER(LEN=2) :: element_symbol
|
||||
INTEGER :: from, iatom, icol, j, jatom, katom, &
|
||||
natom, to
|
||||
REAL(KIND=dp) :: fint
|
||||
|
||||
fint = 42.255_dp*massunit*debye**2*bohr**2
|
||||
natom = SIZE(D, 1)
|
||||
WRITE (UNIT=iw, FMT="(/,T2,'VIB|',T30,'NORMAL MODES - CARTESIAN DISPLACEMENTS')")
|
||||
WRITE (UNIT=iw, FMT="(T2,'VIB|')")
|
||||
|
|
@ -668,8 +670,8 @@ CONTAINS
|
|||
WRITE (UNIT=iw, FMT="(T2,'VIB|Frequency (cm^-1)',3(1X,F12.6,8X))") &
|
||||
(freq(icol), icol=from, to)
|
||||
IF (ASSOCIATED(intensities)) THEN
|
||||
WRITE (UNIT=iw, FMT="(T2,'VIB|Intensities ',3(1X,F12.6,8X))") &
|
||||
(intensities(icol), icol=from, to)
|
||||
WRITE (UNIT=iw, FMT="(T2,'VIB|IR int (KM/Mole) ',3(1X,F12.6,8X))") &
|
||||
(fint*intensities(icol)**2, icol=from, to)
|
||||
END IF
|
||||
WRITE (UNIT=iw, FMT="(T2,'VIB|Red.Masses (a.u.)',3(1X,F12.6,8X))") &
|
||||
(m(icol), icol=from, to)
|
||||
|
|
@ -727,7 +729,9 @@ CONTAINS
|
|||
D(:, i) = mat(:, i)
|
||||
DO j = i + 1, dof
|
||||
norm = DOT_PRODUCT(mat(:, i), mat(:, j))
|
||||
CPASSERT(ABS(norm) < thrs_motion)
|
||||
IF (ABS(norm) > thrs_motion) THEN
|
||||
CPWARN("Orthogonality error in transformation matrix")
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
! Generate the nvib orthogonal vectors
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ MODULE motion_utils
|
|||
get_output_format, rot_ana
|
||||
|
||||
CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'motion_utils'
|
||||
REAL(KIND=dp), PARAMETER, PUBLIC :: thrs_motion = 1.0E4_dp*EPSILON(0.0_dp)
|
||||
REAL(KIND=dp), PARAMETER, PUBLIC :: thrs_motion = 5.0E-10_dp
|
||||
|
||||
CONTAINS
|
||||
|
||||
|
|
@ -211,7 +211,7 @@ CONTAINS
|
|||
lrot = 1
|
||||
DO i = 1, 3
|
||||
norm = SQRT(DOT_PRODUCT(Rot(:, i), Rot(:, i)))
|
||||
IF (norm <= thrs_motion) THEN
|
||||
IF (norm <= SQRT(thrs_motion)) THEN
|
||||
lrot(i) = 0
|
||||
CYCLE
|
||||
END IF
|
||||
|
|
|
|||
|
|
@ -640,6 +640,9 @@ CONTAINS
|
|||
"PRINT%PROGRAM_BANNER")
|
||||
END IF
|
||||
|
||||
! set periodicity flag
|
||||
dft_control%qs_control%periodicity = SUM(cell%perd)
|
||||
|
||||
! *** Read the input section with the Quickstep control parameters ***
|
||||
CALL read_qs_section(dft_control%qs_control, qs_section)
|
||||
CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ MODULE qs_tddfpt2_fhxc
|
|||
USE cp_control_types, ONLY: stda_control_type
|
||||
USE cp_dbcsr_cp2k_link, ONLY: cp_dbcsr_alloc_block_from_nbl
|
||||
USE cp_dbcsr_operations, ONLY: copy_fm_to_dbcsr,&
|
||||
cp_dbcsr_plus_fm_fm_t,&
|
||||
cp_dbcsr_sm_fm_multiply
|
||||
USE cp_fm_types, ONLY: cp_fm_create,&
|
||||
cp_fm_get_info,&
|
||||
|
|
@ -142,18 +143,15 @@ CONTAINS
|
|||
IF (ALLOCATED(work_matrices%evects_sub)) THEN
|
||||
IF (ASSOCIATED(work_matrices%evects_sub(1, ivect)%matrix)) THEN
|
||||
DO ispin = 1, nspins
|
||||
! Can this be done using cp_dbcsr_plus_fm_fm_t ?
|
||||
CALL cp_gemm('N', 'T', nao, nao, nactive(ispin), &
|
||||
0.5_dp, sub_env%mos_occ(ispin)%matrix, &
|
||||
work_matrices%evects_sub(ispin, ivect)%matrix, &
|
||||
0.0_dp, work_matrices%rho_ao_orb_fm_sub)
|
||||
CALL cp_gemm('N', 'T', nao, nao, nactive(ispin), &
|
||||
0.5_dp, work_matrices%evects_sub(ispin, ivect)%matrix, &
|
||||
sub_env%mos_occ(ispin)%matrix, &
|
||||
1.0_dp, work_matrices%rho_ao_orb_fm_sub)
|
||||
|
||||
CALL copy_fm_to_dbcsr(work_matrices%rho_ao_orb_fm_sub, &
|
||||
rho_ia_ao(ispin)%matrix, keep_sparsity=.TRUE.)
|
||||
CALL dbcsr_set(rho_ia_ao(ispin)%matrix, 0.0_dp)
|
||||
CALL cp_dbcsr_plus_fm_fm_t(rho_ia_ao(ispin)%matrix, &
|
||||
matrix_v=sub_env%mos_occ(ispin)%matrix, &
|
||||
matrix_g=work_matrices%evects_sub(ispin, ivect)%matrix, &
|
||||
ncol=nactive(ispin), alpha=0.5_dp)
|
||||
CALL cp_dbcsr_plus_fm_fm_t(rho_ia_ao(ispin)%matrix, &
|
||||
matrix_v=work_matrices%evects_sub(ispin, ivect)%matrix, &
|
||||
matrix_g=sub_env%mos_occ(ispin)%matrix, &
|
||||
ncol=nactive(ispin), alpha=0.5_dp)
|
||||
END DO
|
||||
ELSE
|
||||
! skip trial vectors which are assigned to different parallel groups
|
||||
|
|
@ -161,14 +159,15 @@ CONTAINS
|
|||
END IF
|
||||
ELSE
|
||||
DO ispin = 1, nspins
|
||||
! Can this be done using cp_dbcsr_plus_fm_fm_t ?
|
||||
CALL cp_gemm('N', 'T', nao, nao, nactive(ispin), 0.5_dp, sub_env%mos_occ(ispin)%matrix, &
|
||||
evects(ispin, ivect)%matrix, 0.0_dp, work_matrices%rho_ao_orb_fm_sub)
|
||||
CALL cp_gemm('N', 'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect)%matrix, &
|
||||
sub_env%mos_occ(ispin)%matrix, 1.0_dp, work_matrices%rho_ao_orb_fm_sub)
|
||||
|
||||
CALL copy_fm_to_dbcsr(work_matrices%rho_ao_orb_fm_sub, &
|
||||
rho_ia_ao(ispin)%matrix, keep_sparsity=.TRUE.)
|
||||
CALL dbcsr_set(rho_ia_ao(ispin)%matrix, 0.0_dp)
|
||||
CALL cp_dbcsr_plus_fm_fm_t(rho_ia_ao(ispin)%matrix, &
|
||||
matrix_v=sub_env%mos_occ(ispin)%matrix, &
|
||||
matrix_g=evects(ispin, ivect)%matrix, &
|
||||
ncol=nactive(ispin), alpha=0.5_dp)
|
||||
CALL cp_dbcsr_plus_fm_fm_t(rho_ia_ao(ispin)%matrix, &
|
||||
matrix_v=evects(ispin, ivect)%matrix, &
|
||||
matrix_g=sub_env%mos_occ(ispin)%matrix, &
|
||||
ncol=nactive(ispin), alpha=0.5_dp)
|
||||
END DO
|
||||
END IF
|
||||
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ MODULE qs_tddfpt2_methods
|
|||
tddfpt_oecorr,&
|
||||
tddfpt_release_ground_state_mos
|
||||
USE string_utilities, ONLY: integer_to_string
|
||||
USE xc_write_output, ONLY: xc_write
|
||||
#include "./base/base_uses.f90"
|
||||
|
||||
IMPLICIT NONE
|
||||
|
|
@ -139,7 +140,8 @@ CONTAINS
|
|||
iter, log_unit, mult, nao, niters, &
|
||||
nspins, nstates, nstates_read
|
||||
INTEGER, DIMENSION(maxspins) :: nactive
|
||||
LOGICAL :: do_admm, do_hfx, is_restarted
|
||||
LOGICAL :: do_admm, do_exck, do_hfx, do_hfxlr, &
|
||||
is_restarted
|
||||
REAL(kind=dp) :: conv
|
||||
REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: evals
|
||||
TYPE(admm_type), POINTER :: admm_env
|
||||
|
|
@ -173,13 +175,16 @@ CONTAINS
|
|||
! input section print/xc
|
||||
NULLIFY (tddfpt_section)
|
||||
tddfpt_section => section_vals_get_subs_vals(qs_env%input, "PROPERTIES%TDDFPT")
|
||||
CALL tddfpt_input(qs_env, do_hfx, do_admm, xc_section, tddfpt_print_section, lri_section)
|
||||
CALL tddfpt_input(qs_env, do_hfx, do_admm, do_exck, do_hfxlr, &
|
||||
xc_section, tddfpt_print_section, lri_section)
|
||||
|
||||
CALL get_qs_env(qs_env, blacs_env=blacs_env, cell=cell, dft_control=dft_control, &
|
||||
matrix_ks=matrix_ks, matrix_s=matrix_s, mos=mos, scf_env=scf_env)
|
||||
tddfpt_control => dft_control%tddfpt2_control
|
||||
tddfpt_control%do_hfx = do_hfx
|
||||
tddfpt_control%do_admm = do_admm
|
||||
tddfpt_control%do_hfxlr = do_hfxlr
|
||||
tddfpt_control%do_exck = do_exck
|
||||
|
||||
CALL cite_reference(Iannuzzi2005)
|
||||
IF (tddfpt_control%kernel == tddfpt_kernel_stda) THEN
|
||||
|
|
@ -189,6 +194,7 @@ CONTAINS
|
|||
|
||||
log_unit = cp_print_key_unit_nr(logger, tddfpt_print_section, "PROGRAM_BANNER", extension=".tddfptLog")
|
||||
CALL tddfpt_header(log_unit)
|
||||
CALL kernel_info(log_unit, dft_control, tddfpt_control, xc_section)
|
||||
CALL cp_print_key_finished_output(log_unit, logger, tddfpt_print_section, "PROGRAM_BANNER")
|
||||
|
||||
! obtain occupied and virtual (unoccupied) ground-state Kohn-Sham orbitals
|
||||
|
|
@ -613,21 +619,26 @@ CONTAINS
|
|||
!> \param qs_env Quickstep environment
|
||||
!> \param do_hfx ...
|
||||
!> \param do_admm ...
|
||||
!> \param do_exck ...
|
||||
!> \param do_hfxlr ...
|
||||
!> \param xc_section ...
|
||||
!> \param tddfpt_print_section ...
|
||||
!> \param lri_section ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE tddfpt_input(qs_env, do_hfx, do_admm, xc_section, tddfpt_print_section, lri_section)
|
||||
SUBROUTINE tddfpt_input(qs_env, do_hfx, do_admm, do_exck, do_hfxlr, &
|
||||
xc_section, tddfpt_print_section, lri_section)
|
||||
TYPE(qs_environment_type), POINTER :: qs_env
|
||||
LOGICAL, INTENT(INOUT) :: do_hfx, do_admm
|
||||
LOGICAL, INTENT(INOUT) :: do_hfx, do_admm, do_exck, do_hfxlr
|
||||
TYPE(section_vals_type), POINTER :: xc_section, tddfpt_print_section, &
|
||||
lri_section
|
||||
|
||||
CHARACTER(len=20) :: nstates_str
|
||||
LOGICAL :: explicit_xc
|
||||
LOGICAL :: exar, exf, exgcp, exhf, exhfxk, exk, &
|
||||
explicit_root, expot, exvdw, exwfn
|
||||
REAL(kind=dp) :: C_hf
|
||||
TYPE(dft_control_type), POINTER :: dft_control
|
||||
TYPE(section_vals_type), POINTER :: hfx_section, input, tddfpt_section
|
||||
TYPE(section_vals_type), POINTER :: hfx_section, input, tddfpt_section, &
|
||||
xc_root, xc_sub
|
||||
TYPE(tddfpt2_control_type), POINTER :: tddfpt_control
|
||||
|
||||
NULLIFY (dft_control, input)
|
||||
|
|
@ -649,34 +660,115 @@ CONTAINS
|
|||
tddfpt_print_section => section_vals_get_subs_vals(tddfpt_section, "PRINT")
|
||||
|
||||
IF ((tddfpt_control%kernel == tddfpt_kernel_full) .OR. (tddfpt_control%kernel == tddfpt_kernel_flex)) THEN
|
||||
NULLIFY (xc_root)
|
||||
xc_root => section_vals_get_subs_vals(tddfpt_section, "XC")
|
||||
CALL section_vals_get(xc_root, explicit=explicit_root)
|
||||
NULLIFY (xc_section)
|
||||
xc_section => section_vals_get_subs_vals(tddfpt_section, "XC%XC_FUNCTIONAL")
|
||||
CALL section_vals_get(xc_section, explicit=explicit_xc)
|
||||
IF (explicit_xc) THEN
|
||||
xc_section => section_vals_get_subs_vals(tddfpt_section, "XC")
|
||||
ELSE
|
||||
xc_section => section_vals_get_subs_vals(input, "DFT%XC")
|
||||
END IF
|
||||
hfx_section => section_vals_get_subs_vals(xc_section, "HF")
|
||||
|
||||
CALL section_vals_get(hfx_section, explicit=do_hfx)
|
||||
IF (do_hfx) THEN
|
||||
CALL section_vals_val_get(hfx_section, "FRACTION", r_val=C_hf)
|
||||
do_hfx = (C_hf /= 0.0_dp)
|
||||
END IF
|
||||
do_admm = do_hfx .AND. dft_control%do_admm
|
||||
|
||||
IF (do_admm) THEN
|
||||
IF (explicit_xc) THEN
|
||||
IF (explicit_root) THEN
|
||||
! No ADIABATIC_RESCALING option possible
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "ADIABATIC_RESCALING")
|
||||
CALL section_vals_get(xc_sub, explicit=exar)
|
||||
IF (exar) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel with ADIABATIC_RESCALING not possible.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
! No GCP_POTENTIAL option possible
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "GCP_POTENTIAL")
|
||||
CALL section_vals_get(xc_sub, explicit=exgcp)
|
||||
IF (exgcp) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel with GCP_POTENTIAL not possible.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
! No VDW_POTENTIAL option possible
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "VDW_POTENTIAL")
|
||||
CALL section_vals_get(xc_sub, explicit=exvdw)
|
||||
IF (exvdw) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel with VDW_POTENTIAL not possible.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
! No WF_CORRELATION option possible
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "WF_CORRELATION")
|
||||
CALL section_vals_get(xc_sub, explicit=exwfn)
|
||||
IF (exwfn) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel with WF_CORRELATION not possible.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
! No XC_POTENTIAL option possible
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "XC_POTENTIAL")
|
||||
CALL section_vals_get(xc_sub, explicit=expot)
|
||||
IF (expot) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel with XC_POTENTIAL not possible.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
!
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "XC_FUNCTIONAL")
|
||||
CALL section_vals_get(xc_sub, explicit=exf)
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "XC_KERNEL")
|
||||
CALL section_vals_get(xc_sub, explicit=exk)
|
||||
IF ((exf .AND. exk) .OR. .NOT. (exf .OR. exk)) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel needs XC_FUNCTIONAL or XC_KERNEL section.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "HF")
|
||||
CALL section_vals_get(xc_sub, explicit=exhf)
|
||||
NULLIFY (xc_sub)
|
||||
xc_sub => section_vals_get_subs_vals(xc_root, "HFX_KERNEL")
|
||||
CALL section_vals_get(xc_sub, explicit=exhfxk)
|
||||
IF (exhf .AND. exhfxk) THEN
|
||||
CALL cp_warn(__LOCATION__, "TDDFPT Kernel: HF and HFX_KERNEL are exclusive.")
|
||||
CPABORT("TDDFPT Input")
|
||||
END IF
|
||||
!
|
||||
xc_section => xc_root
|
||||
hfx_section => section_vals_get_subs_vals(xc_section, "HF")
|
||||
CALL section_vals_get(hfx_section, explicit=do_hfx)
|
||||
IF (do_hfx) THEN
|
||||
CALL section_vals_val_get(hfx_section, "FRACTION", r_val=C_hf)
|
||||
do_hfx = (C_hf /= 0.0_dp)
|
||||
END IF
|
||||
do_admm = do_hfx .AND. dft_control%do_admm
|
||||
IF (do_admm) THEN
|
||||
! 'admm_env%xc_section_primary' and 'admm_env%xc_section_aux' need to be redefined
|
||||
CALL cp_abort(__LOCATION__, &
|
||||
"ADMM is not implemented for a TDDFT kernel XC-functional which is different from "// &
|
||||
"the one used for the ground-state calculation. A ground-state 'admm_env' cannot be reused.")
|
||||
END IF
|
||||
! SET HFX_KERNEL and/or XC_KERNEL
|
||||
IF (exhfxk) THEN
|
||||
do_exck = .TRUE.
|
||||
ELSE
|
||||
do_exck = .FALSE.
|
||||
END IF
|
||||
IF (exk) THEN
|
||||
do_hfxlr = .TRUE.
|
||||
ELSE
|
||||
do_hfxlr = .FALSE.
|
||||
END IF
|
||||
ELSE
|
||||
xc_section => section_vals_get_subs_vals(input, "DFT%XC")
|
||||
hfx_section => section_vals_get_subs_vals(xc_section, "HF")
|
||||
CALL section_vals_get(hfx_section, explicit=do_hfx)
|
||||
IF (do_hfx) THEN
|
||||
CALL section_vals_val_get(hfx_section, "FRACTION", r_val=C_hf)
|
||||
do_hfx = (C_hf /= 0.0_dp)
|
||||
END IF
|
||||
do_admm = do_hfx .AND. dft_control%do_admm
|
||||
do_exck = .FALSE.
|
||||
do_hfxlr = .FALSE.
|
||||
END IF
|
||||
ELSE
|
||||
do_hfx = .FALSE.
|
||||
do_admm = .FALSE.
|
||||
do_exck = .FALSE.
|
||||
do_hfxlr = .FALSE.
|
||||
END IF
|
||||
|
||||
! reset rks_triplets if UKS is in use
|
||||
|
|
@ -692,4 +784,84 @@ CONTAINS
|
|||
|
||||
END SUBROUTINE tddfpt_input
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param log_unit ...
|
||||
!> \param dft_control ...
|
||||
!> \param tddfpt_control ...
|
||||
!> \param xc_section ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE kernel_info(log_unit, dft_control, tddfpt_control, xc_section)
|
||||
INTEGER, INTENT(IN) :: log_unit
|
||||
TYPE(dft_control_type), POINTER :: dft_control
|
||||
TYPE(tddfpt2_control_type), POINTER :: tddfpt_control
|
||||
TYPE(section_vals_type), POINTER :: xc_section
|
||||
|
||||
CHARACTER(LEN=4) :: ktype
|
||||
LOGICAL :: lsd
|
||||
|
||||
lsd = (dft_control%nspins > 1)
|
||||
IF (tddfpt_control%kernel == tddfpt_kernel_full) THEN
|
||||
ktype = "FULL"
|
||||
IF (log_unit > 0) THEN
|
||||
WRITE (log_unit, "(T2,A,T77,A4)") "KERNEL|", TRIM(ktype)
|
||||
CALL xc_write(log_unit, xc_section, lsd)
|
||||
IF (tddfpt_control%do_hfx) THEN
|
||||
IF (tddfpt_control%do_admm) THEN
|
||||
WRITE (log_unit, "(T2,A,T62,A19)") "KERNEL|", "ADMM exact exchange"
|
||||
IF (tddfpt_control%admm_symm) THEN
|
||||
WRITE (log_unit, "(T2,A,T60,A21)") "KERNEL|", "symmetric ADMM kernel"
|
||||
END IF
|
||||
ELSE
|
||||
WRITE (log_unit, "(T2,A,T67,A14)") "KERNEL|", "exact exchange"
|
||||
END IF
|
||||
END IF
|
||||
IF (tddfpt_control%do_lrigpw) THEN
|
||||
WRITE (log_unit, "(T2,A,T43,A38)") "KERNEL|", "LRI approximation of transition density"
|
||||
END IF
|
||||
END IF
|
||||
ELSE IF (tddfpt_control%kernel == tddfpt_kernel_stda) THEN
|
||||
ktype = "sTDA"
|
||||
IF (log_unit > 0) THEN
|
||||
WRITE (log_unit, "(T2,A,T77,A4)") "KERNEL|", TRIM(ktype)
|
||||
IF (tddfpt_control%stda_control%do_ewald) THEN
|
||||
WRITE (log_unit, "(T2,A,T78,A3)") "KERNEL| Coulomb term uses Ewald summation"
|
||||
ELSE
|
||||
WRITE (log_unit, "(T2,A,T78,A3)") "KERNEL| Coulomb term uses direct summation (MIC)"
|
||||
END IF
|
||||
IF (tddfpt_control%stda_control%do_exchange) THEN
|
||||
WRITE (log_unit, "(T2,A,T78,A3)") "KERNEL| Exact exchange term", "YES"
|
||||
WRITE (log_unit, "(T2,A,T71,F10.3)") "KERNEL| Short range HFX fraction:", &
|
||||
tddfpt_control%stda_control%hfx_fraction
|
||||
ELSE
|
||||
WRITE (log_unit, "(T2,A,T79,A2)") "KERNEL| Exact exchange term", "NO"
|
||||
END IF
|
||||
WRITE (log_unit, "(T2,A,T66,E15.3)") "KERNEL| Transition density filter", &
|
||||
tddfpt_control%stda_control%eps_td_filter
|
||||
END IF
|
||||
ELSE IF (tddfpt_control%kernel == tddfpt_kernel_none) THEN
|
||||
ktype = "NONE"
|
||||
IF (log_unit > 0) THEN
|
||||
WRITE (log_unit, "(T2,A,T77,A4)") "KERNEL|", TRIM(ktype)
|
||||
END IF
|
||||
ELSE
|
||||
!CPABORT("Unknown kernel")
|
||||
END IF
|
||||
!
|
||||
IF (log_unit > 0) THEN
|
||||
IF (tddfpt_control%rks_triplets) THEN
|
||||
WRITE (log_unit, "(T2,A,T74,A7)") "KERNEL| Spin symmetry of excitations", "Triplet"
|
||||
ELSE IF (lsd) THEN
|
||||
WRITE (log_unit, "(T2,A,T69,A12)") "KERNEL| Spin symmetry of excitations", "Unrestricted"
|
||||
ELSE
|
||||
WRITE (log_unit, "(T2,A,T74,A7)") "KERNEL| Spin symmetry of excitations", "Singlet"
|
||||
END IF
|
||||
WRITE (log_unit, "(T2,A,T73,I8)") "TDDFPT| Number of states calculated", tddfpt_control%nstates
|
||||
WRITE (log_unit, "(T2,A,T73,I8)") "TDDFPT| Number of Davidson iterations", tddfpt_control%niters
|
||||
WRITE (log_unit, "(T2,A,T66,E15.3)") "TDDFPT| Davidson iteration convergence", tddfpt_control%conv
|
||||
WRITE (log_unit, "(T2,A,T73,I8)") "TDDFPT| Max. number of Krylov space vectors", tddfpt_control%nkvs
|
||||
END IF
|
||||
|
||||
END SUBROUTINE kernel_info
|
||||
|
||||
END MODULE qs_tddfpt2_methods
|
||||
|
|
|
|||
|
|
@ -20,16 +20,21 @@ MODULE voronoi_interface
|
|||
USE bibliography, ONLY: Rycroft2009, Thomas2015, Brehm2018, Brehm2020, &
|
||||
Brehm2021, cite_reference
|
||||
USE kinds, ONLY: dp, default_path_length
|
||||
USE cell_types, ONLY: cell_type
|
||||
USE cell_types, ONLY: cell_type, pbc
|
||||
USE pw_types, ONLY: pw_p_type, pw_type
|
||||
USE physcon, ONLY: bohr, debye
|
||||
USE qs_environment_types, ONLY: get_qs_env, &
|
||||
qs_environment_type
|
||||
USE molecule_kind_types, ONLY: molecule_kind_type, &
|
||||
write_molecule_kind_set
|
||||
USE molecule_types, ONLY: molecule_type
|
||||
USE qs_rho_types, ONLY: qs_rho_get, &
|
||||
qs_rho_type
|
||||
USE atomic_kind_types, ONLY: atomic_kind_type, &
|
||||
get_atomic_kind
|
||||
USE particle_list_types, ONLY: particle_list_type
|
||||
USE particle_types, ONLY: particle_type
|
||||
USE cp_files, ONLY: file_exists, close_file, open_file
|
||||
USE qs_kind_types, ONLY: get_qs_kind, &
|
||||
qs_kind_type
|
||||
USE cp_para_types, ONLY: cp_para_env_type
|
||||
|
|
@ -302,7 +307,7 @@ CONTAINS
|
|||
bqb_history
|
||||
LOGICAL :: outemp, bqb_skip_first, voro_skip_first, &
|
||||
bqb_store_step, bqb_check, voro_sanity, &
|
||||
bqb_overwrite, vori_overwrite
|
||||
bqb_overwrite, vori_overwrite, ionode, molprop
|
||||
REAL(KIND=dp) :: zeff
|
||||
TYPE(qs_rho_type), POINTER :: rho
|
||||
TYPE(cp_logger_type), POINTER :: logger
|
||||
|
|
@ -331,7 +336,7 @@ CONTAINS
|
|||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: voro_wrapped_pos
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: voro_charge_center
|
||||
REAL(KIND=dp), DIMENSION(:), POINTER :: user_radii
|
||||
CHARACTER(len=default_path_length) :: bqb_file_name
|
||||
CHARACTER(len=default_path_length) :: bqb_file_name, mp_file_name
|
||||
CHARACTER(len=128) :: bqb_parm_string
|
||||
#if defined(__HAS_IEEE_EXCEPTIONS)
|
||||
LOGICAL, DIMENSION(5) :: halt
|
||||
|
|
@ -347,6 +352,7 @@ CONTAINS
|
|||
nkind=nkind, natom=natom, subsys=subsys, dft_control=dft_control, &
|
||||
cell=cell)
|
||||
|
||||
ionode = para_env%ionode
|
||||
my_rank = para_env%mepos
|
||||
num_pe = para_env%num_pe
|
||||
gid = para_env%group
|
||||
|
|
@ -373,6 +379,9 @@ CONTAINS
|
|||
CALL cite_reference(Brehm2018)
|
||||
CALL cite_reference(Brehm2020)
|
||||
CALL cite_reference(Brehm2021)
|
||||
!
|
||||
CALL section_vals_val_get(input_voro, "MOLECULAR_PROPERTIES", l_val=molprop)
|
||||
CALL section_vals_val_get(input_voro, "MOLPROP_FILE_NAME", c_val=mp_file_name)
|
||||
END IF
|
||||
|
||||
IF (do_bqb /= 0) THEN
|
||||
|
|
@ -410,7 +419,7 @@ CONTAINS
|
|||
CALL ieee_set_halting_mode(IEEE_ALL, .FALSE.)
|
||||
#endif
|
||||
|
||||
IF (my_rank == 0) THEN
|
||||
IF (ionode) THEN
|
||||
|
||||
IF (iounit > 0) THEN
|
||||
WRITE (iounit, *) ""
|
||||
|
|
@ -567,7 +576,7 @@ CONTAINS
|
|||
|
||||
DEALLOCATE (buf)
|
||||
|
||||
IF (my_rank == 0) THEN
|
||||
IF (ionode) THEN
|
||||
|
||||
IF (do_voro /= 0) THEN
|
||||
|
||||
|
|
@ -672,6 +681,12 @@ CONTAINS
|
|||
END DO
|
||||
END IF
|
||||
|
||||
IF (molprop) THEN
|
||||
CALL molecular_properties(subsys, cell, sim_step, sim_time, iounit, &
|
||||
particles_r, particles_c, &
|
||||
voro_charge, voro_charge_center, mp_file_name)
|
||||
END IF
|
||||
|
||||
DEALLOCATE (voro_radii)
|
||||
DEALLOCATE (voro_charge)
|
||||
DEALLOCATE (voro_volume)
|
||||
|
|
@ -709,7 +724,7 @@ CONTAINS
|
|||
|
||||
END IF
|
||||
|
||||
IF (my_rank == 0) THEN
|
||||
IF (ionode) THEN
|
||||
DEALLOCATE (particles_z)
|
||||
DEALLOCATE (particles_c)
|
||||
DEALLOCATE (particles_r)
|
||||
|
|
@ -749,6 +764,98 @@ CONTAINS
|
|||
ret = libvori_finalize()
|
||||
#endif
|
||||
END SUBROUTINE
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param subsys ...
|
||||
!> \param cell ...
|
||||
!> \param sim_step ...
|
||||
!> \param sim_time ...
|
||||
!> \param iounit ...
|
||||
!> \param particles_r ...
|
||||
!> \param particles_c ...
|
||||
!> \param voro_charge ...
|
||||
!> \param voro_charge_center ...
|
||||
!> \param mp_file_name ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE molecular_properties(subsys, cell, sim_step, sim_time, iounit, &
|
||||
particles_r, particles_c, voro_charge, &
|
||||
voro_charge_center, mp_file_name)
|
||||
TYPE(qs_subsys_type), POINTER :: subsys
|
||||
TYPE(cell_type), POINTER :: cell
|
||||
INTEGER, INTENT(IN) :: sim_step
|
||||
REAL(KIND=dp), INTENT(IN) :: sim_time
|
||||
INTEGER, INTENT(IN) :: iounit
|
||||
REAL(KIND=dp), DIMENSION(:, :) :: particles_r
|
||||
REAL(KIND=dp), DIMENSION(:) :: particles_c, voro_charge
|
||||
REAL(KIND=dp), DIMENSION(:, :) :: voro_charge_center
|
||||
CHARACTER(len=default_path_length) :: mp_file_name
|
||||
|
||||
CHARACTER(len=3) :: fstatus
|
||||
CHARACTER(len=default_path_length) :: fname
|
||||
INTEGER :: ia, imol, mk, mpunit, na, na1, na2, &
|
||||
nmolecule
|
||||
REAL(KIND=dp) :: cm, ddip
|
||||
REAL(KIND=dp), DIMENSION(3) :: dipm, posa, posc, ref
|
||||
TYPE(molecule_kind_type), POINTER :: molecule_kind
|
||||
TYPE(molecule_type), DIMENSION(:), POINTER :: molecule_set
|
||||
|
||||
IF (iounit > 0) THEN
|
||||
WRITE (iounit, *) "VORONOI| Start Calculation of Molecular Properties from Voronoi Integration"
|
||||
END IF
|
||||
CALL qs_subsys_get(subsys, molecule_set=molecule_set)
|
||||
|
||||
IF (INDEX(mp_file_name, "__STD_OUT__") /= 0) THEN
|
||||
mpunit = iounit
|
||||
ELSE
|
||||
fname = ADJUSTL(mp_file_name)
|
||||
IF (fname(1:2) /= "./") THEN
|
||||
fname = TRIM(fname)//".molprop"
|
||||
END IF
|
||||
IF (file_exists(fname)) THEN
|
||||
fstatus = "old"
|
||||
ELSE
|
||||
fstatus = "new"
|
||||
END IF
|
||||
CALL open_file(file_name=fname, file_status=fstatus, file_action="write", &
|
||||
file_position="append", unit_number=mpunit)
|
||||
END IF
|
||||
nmolecule = SIZE(molecule_set)
|
||||
WRITE (mpunit, FMT="(T2,I0)") nmolecule
|
||||
WRITE (mpunit, FMT="(A,I8,A,F12.4,A)") " # Step ", sim_step, ", Time ", &
|
||||
sim_time*femtoseconds, " fs"
|
||||
WRITE (mpunit, FMT="(A,T25,A)") " # Mol Type Charge", &
|
||||
" Dipole[Debye] Total Dipole[Debye]"
|
||||
DO imol = 1, nmolecule
|
||||
molecule_kind => molecule_set(imol)%molecule_kind
|
||||
mk = molecule_kind%kind_number
|
||||
na1 = molecule_set(imol)%first_atom
|
||||
na2 = molecule_set(imol)%last_atom
|
||||
na = na2 - na1 + 1
|
||||
ref(1:3) = 0.0_dp
|
||||
DO ia = na1, na2
|
||||
ref(1:3) = ref(1:3) + particles_r(1:3, ia)
|
||||
END DO
|
||||
ref(1:3) = ref(1:3)/REAL(na, KIND=dp)
|
||||
dipm = 0.0_dp
|
||||
DO ia = na1, na2
|
||||
posa(1:3) = particles_r(1:3, ia) - ref(1:3)
|
||||
posa(1:3) = pbc(posa, cell)
|
||||
posc(1:3) = posa(1:3) + bohr*voro_charge_center(ia, 1:3)/100.0_dp
|
||||
posc(1:3) = pbc(posc, cell)
|
||||
cm = -particles_c(ia) + voro_charge(ia)
|
||||
dipm(1:3) = dipm(1:3) + posa(1:3)*particles_c(ia) + posc(1:3)*cm
|
||||
END DO
|
||||
dipm(1:3) = dipm(1:3)*debye
|
||||
ddip = SQRT(SUM(dipm**2))
|
||||
cm = SUM(voro_charge(na1:na2))
|
||||
WRITE (mpunit, FMT="(I8,I6,F12.4,T25,3F12.4,8X,F12.4)") imol, mk, cm, dipm(1:3), ddip
|
||||
END DO
|
||||
IF (mpunit /= iounit) THEN
|
||||
CALL close_file(mpunit)
|
||||
END IF
|
||||
|
||||
END SUBROUTINE molecular_properties
|
||||
|
||||
END MODULE voronoi_interface
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ MODULE xc_write_output
|
|||
|
||||
USE input_constants, ONLY: xc_none
|
||||
USE input_cp2k_check, ONLY: xc_functionals_expand
|
||||
USE input_section_types, ONLY: section_get_keyword_index,&
|
||||
section_vals_duplicate,&
|
||||
USE input_section_types, ONLY: section_vals_duplicate,&
|
||||
section_vals_get,&
|
||||
section_vals_get_subs_vals,&
|
||||
section_vals_get_subs_vals2,&
|
||||
|
|
@ -39,12 +38,12 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param output_unit ...
|
||||
!> \param iounit ...
|
||||
!> \param xc_section ...
|
||||
!> \param lsd ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE xc_write(output_unit, xc_section, lsd)
|
||||
INTEGER, INTENT(IN) :: output_unit
|
||||
SUBROUTINE xc_write(iounit, xc_section, lsd)
|
||||
INTEGER, INTENT(IN) :: iounit
|
||||
TYPE(section_vals_type), POINTER :: xc_section
|
||||
LOGICAL, INTENT(IN) :: lsd
|
||||
|
||||
|
|
@ -54,7 +53,7 @@ CONTAINS
|
|||
INTEGER :: i_rep, ifun, il, myfun, n_rep
|
||||
TYPE(section_vals_type), POINTER :: libxc_fun, xc_fun, xc_fun_section
|
||||
|
||||
IF (output_unit > 0) THEN
|
||||
IF (iounit > 0) THEN
|
||||
|
||||
xc_fun_section => section_vals_get_subs_vals(xc_section, &
|
||||
"XC_FUNCTIONAL")
|
||||
|
|
@ -62,12 +61,12 @@ CONTAINS
|
|||
IF (myfun /= xc_none) THEN
|
||||
|
||||
!check if FUNCTIONAL_ROUTINE keyword present
|
||||
IF (section_get_keyword_index(xc_section%section, "FUNCTIONAL_ROUTINE") .NE. -2) THEN
|
||||
CALL section_vals_val_get(xc_section, "FUNCTIONAL_ROUTINE", &
|
||||
c_val=tmpStr)
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| ROUTINE=',a)") &
|
||||
TRIM(tmpStr)
|
||||
END IF
|
||||
!IF (section_get_keyword_index(xc_section%section, "FUNCTIONAL_ROUTINE") .NE. -2) THEN
|
||||
! CALL section_vals_val_get(xc_section, "FUNCTIONAL_ROUTINE", &
|
||||
! c_val=tmpStr)
|
||||
! WRITE (iounit, fmt="(' FUNCTIONAL| ROUTINE=',a)") &
|
||||
! TRIM(tmpStr)
|
||||
!END IF
|
||||
|
||||
CALL xc_functionals_expand(xc_fun_section, xc_section)
|
||||
ifun = 0
|
||||
|
|
@ -82,10 +81,10 @@ CONTAINS
|
|||
ALLOCATE (CHARACTER(LEN=20*default_string_length) :: reference)
|
||||
END IF
|
||||
CALL xc_functional_get_info(xc_fun, lsd=lsd, reference=reference, shortform=shortform)
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| ',a,':')") &
|
||||
WRITE (iounit, fmt="(' FUNCTIONAL| ',a,':')") &
|
||||
TRIM(xc_fun%section%name)
|
||||
DO il = 1, LEN_TRIM(reference), 67
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| ',a67)") reference(il:)
|
||||
WRITE (iounit, fmt="(' FUNCTIONAL| ',a67)") reference(il:)
|
||||
END DO
|
||||
DEALLOCATE (reference)
|
||||
ELSE
|
||||
|
|
@ -100,18 +99,18 @@ CONTAINS
|
|||
CALL xc_functional_get_info(libxc_fun, lsd=lsd, reference=reference, shortform=shortform, print_warn=.TRUE.)
|
||||
CALL section_vals_release(libxc_fun)
|
||||
CALL libxc_version_info(tmpStr)
|
||||
WRITE (output_unit, fmt="(A,A,A)") ' FUNCTIONAL| LIBXC Vers. ', TRIM(tmpStr(1:5)), &
|
||||
WRITE (iounit, fmt="(A,A,A)") ' FUNCTIONAL| LIBXC Vers. ', TRIM(tmpStr(1:5)), &
|
||||
' (Marques, Oliveira, Burnus, CPC 183, 2272 (2012))'
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| ',a,':')") TRIM(shortform)
|
||||
WRITE (iounit, fmt="(' FUNCTIONAL| ',a,':')") TRIM(shortform)
|
||||
DO il = 1, LEN_TRIM(reference), 67
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| ',a67)") reference(il:)
|
||||
WRITE (iounit, fmt="(' FUNCTIONAL| ',a67)") reference(il:)
|
||||
END DO
|
||||
DEALLOCATE (reference)
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
ELSE
|
||||
WRITE (output_unit, fmt="(' FUNCTIONAL| NO EXCHANGE-CORRELATION FUNCTIONAL USED.')")
|
||||
WRITE (iounit, fmt="(' FUNCTIONAL| NO EXCHANGE-CORRELATION FUNCTIONAL USED.')")
|
||||
END IF
|
||||
END IF
|
||||
|
||||
|
|
|
|||
69
tests/QS/regtest-ec/HF2_ec_voronoi.inp
Normal file
69
tests/QS/regtest-ec/HF2_ec_voronoi.inp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
POTENTIAL_FILE_NAME GTH_POTENTIALS
|
||||
&MGRID
|
||||
CUTOFF 400
|
||||
&END MGRID
|
||||
&QS
|
||||
EPS_DEFAULT 1.E-14
|
||||
&END QS
|
||||
&ENERGY_CORRECTION
|
||||
ENERGY_FUNCTIONAL HARRIS
|
||||
HARRIS_BASIS ORBITAL
|
||||
&XC
|
||||
&XC_FUNCTIONAL
|
||||
&PBE
|
||||
&END
|
||||
&END
|
||||
&END XC
|
||||
&PRINT
|
||||
&MOMENTS ON
|
||||
PERIODIC .FALSE.
|
||||
REFERENCE COM
|
||||
&END
|
||||
&VORONOI
|
||||
SANITY_CHECK T
|
||||
VERBOSE T
|
||||
REFINEMENT_FACTOR 1
|
||||
MOLECULAR_PROPERTIES
|
||||
&END
|
||||
&END
|
||||
&END ENERGY_CORRECTION
|
||||
&SCF
|
||||
EPS_SCF 1.0E-7
|
||||
SCF_GUESS ATOMIC
|
||||
&END
|
||||
&XC
|
||||
&XC_FUNCTIONAL
|
||||
&PADE
|
||||
&END
|
||||
&END
|
||||
&END XC
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000000 0.000000 0.000000 HF
|
||||
F 0.000000 0.000000 1.050000 HF
|
||||
H 0.000000 3.000000 1.050000 HF
|
||||
F 0.000000 3.000000 0.000000 HF
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET ORB DZVP-GTH-BLYP
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND F
|
||||
BASIS_SET ORB DZVP-GTH-BLYP
|
||||
POTENTIAL GTH-PADE-q7
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PROJECT HF
|
||||
RUN_TYPE ENERGY_FORCE
|
||||
PRINT_LEVEL LOW
|
||||
&END GLOBAL
|
||||
|
|
@ -15,6 +15,8 @@ H2_H2O_ecprim.inp 11 1e-10
|
|||
HF_ec_dipole.inp 11 1e-08 -24.8917060368
|
||||
# ENERGY : LS + KG embed + Harris (Diag) dipole
|
||||
HF_ec_voronoi.inp 11 1e-08 -24.8917060368
|
||||
# ENERGY : LS + KG embed + Harris (Diag) molecular dipole
|
||||
HF2_ec_voronoi.inp 11 1e-08 -49.7897161711
|
||||
# ENERGY : LS + KG embed + Harris (Diag) efield
|
||||
HF_ec_field.inp 11 1e-08 -24.8908706031
|
||||
# ENERGY: Test Harris functional solvers
|
||||
|
|
|
|||
|
|
@ -72,4 +72,6 @@ hf.inp 1 1.0E-10
|
|||
He_PBE.inp 1 1.0E-13 -1.14398524502663
|
||||
#
|
||||
h2q.inp 1 1.0E-10 -0.76162210587786
|
||||
# Mol Dipole Voronoi
|
||||
moldip_voronoi.inp 1 1.0E-10 -41.88176215391840
|
||||
#EOF
|
||||
|
|
|
|||
65
tests/QS/regtest-gpw-1/moldip_voronoi.inp
Normal file
65
tests/QS/regtest-gpw-1/moldip_voronoi.inp
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
&GLOBAL
|
||||
PROJECT moldip
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
&END GLOBAL
|
||||
&FORCE_EVAL
|
||||
METHOD QS
|
||||
&DFT
|
||||
BASIS_SET_FILE_NAME GTH_BASIS_SETS
|
||||
POTENTIAL_FILE_NAME POTENTIAL
|
||||
&MGRID
|
||||
CUTOFF 150
|
||||
&END MGRID
|
||||
&QS
|
||||
EPS_DEFAULT 1.0E-8
|
||||
&END QS
|
||||
&SCF
|
||||
EPS_SCF 1.0E-5
|
||||
MAX_SCF 20
|
||||
&OT
|
||||
MINIMIZER DIIS
|
||||
PRECONDITIONER FULL_ALL
|
||||
&END
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL Pade
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&PRINT
|
||||
&MOMENTS
|
||||
MAX_MOMENT 1
|
||||
PERIODIC F
|
||||
REFERENCE USER_DEFINED
|
||||
REF_POINT [angstrom] 2. 0. 0.
|
||||
&END MOMENTS
|
||||
&VORONOI
|
||||
MOLECULAR_PROPERTIES
|
||||
&END
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 10.58 10.58 10.58
|
||||
&END CELL
|
||||
&COORD
|
||||
O 0.000000 0.000000 0.119040 H2O
|
||||
H 0.000000 0.768000 -0.476160 H2O
|
||||
H 0.000000 -0.768000 -0.476160 H2O
|
||||
H 4.000000 0.000000 0.000000 HF
|
||||
F 5.050000 0.000000 0.000000 HF
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET ORB DZVP-GTH
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET ORB DZVP-GTH
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&KIND F
|
||||
BASIS_SET ORB DZVP-GTH
|
||||
POTENTIAL GTH-PADE-q7
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
99
tests/QS/regtest-mp2-grad/HF_dipole.inp
Normal file
99
tests/QS/regtest-mp2-grad/HF_dipole.inp
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
&GLOBAL
|
||||
PROJECT DIPOLE_HF_gpw
|
||||
PRINT_LEVEL LOW
|
||||
RUN_TYPE ENERGY_FORCE
|
||||
&END GLOBAL
|
||||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
POTENTIAL_FILE_NAME POTENTIAL
|
||||
&MGRID
|
||||
CUTOFF 150
|
||||
REL_CUTOFF 30
|
||||
&END MGRID
|
||||
&PRINT
|
||||
&MOMENTS ON
|
||||
PERIODIC .FALSE.
|
||||
REFERENCE COM
|
||||
&END
|
||||
&VORONOI
|
||||
SANITY_CHECK T
|
||||
VERBOSE T
|
||||
REFINEMENT_FACTOR 1
|
||||
MOLECULAR_PROPERTIES
|
||||
&END
|
||||
&END
|
||||
&QS
|
||||
METHOD GPW
|
||||
EPS_DEFAULT 1.0E-12
|
||||
&END QS
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
EPS_SCF 1.0E-6
|
||||
MAX_SCF 100
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF
|
||||
FRACTION 1.0000000
|
||||
&SCREENING
|
||||
SCREEN_ON_INITIAL_P .FALSE.
|
||||
EPS_SCHWARZ 1.0E-6
|
||||
EPS_SCHWARZ_FORCES 1.0E-6
|
||||
&END SCREENING
|
||||
&INTERACTION_POTENTIAL
|
||||
POTENTIAL_TYPE TRUNCATED
|
||||
CUTOFF_RADIUS 1.5
|
||||
T_C_G_DATA t_c_g.dat
|
||||
&END
|
||||
&END HF
|
||||
&WF_CORRELATION
|
||||
&RI_MP2
|
||||
BLOCK_SIZE 1
|
||||
EPS_CANONICAL 0.0001
|
||||
FREE_HFX_BUFFER .TRUE.
|
||||
&CPHF
|
||||
EPS_CONV 1.0E-4
|
||||
MAX_ITER 10
|
||||
&END
|
||||
&END
|
||||
&INTEGRALS
|
||||
&WFC_GPW
|
||||
CUTOFF 50
|
||||
REL_CUTOFF 20
|
||||
EPS_FILTER 1.0E-12
|
||||
EPS_GRID 1.0E-8
|
||||
&END WFC_GPW
|
||||
&END INTEGRALS
|
||||
MEMORY 1.00
|
||||
NUMBER_PROC 1
|
||||
&END
|
||||
&END XC
|
||||
&END DFT
|
||||
&PRINT
|
||||
&FORCES
|
||||
&END
|
||||
&END
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 5.0 5.0 5.0
|
||||
&END CELL
|
||||
&KIND H
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND F
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
POTENTIAL GTH-PADE-q7
|
||||
&END KIND
|
||||
&COORD
|
||||
F 0.000000 0.000000 0.000000 HF
|
||||
H 0.000000 0.000000 1.050000 HF
|
||||
&END
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END TOPOLOGY
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
H2O_grad_mme.inp 11 6e-09 -16.766973026874989
|
||||
H2O_grad_gpw.inp 11 7e-08 -16.990048927268898
|
||||
HF_dipole.inp 11 7e-08 -24.660454660161022
|
||||
H2_H2_no_freeHFX.inp 11 2e-13 -2.307710999246907
|
||||
O2_dyn.inp 11 2e-11 -31.519148246527102
|
||||
O2_dyn_mme.inp 72 1e-8 0.50585576
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ h2o_LRraman.inp 60 1e-04
|
|||
h2o_LRraman_loc.inp 60 1e-04 0.009153812508
|
||||
h2o_LRraman_noort.inp 60 2e-05 0.023303680948
|
||||
H2O_md_polar.inp 60 6e-04 0.614320139535
|
||||
xTB_LRraman.inp 60 2e-05 0.804852847403
|
||||
xTB_LRraman_loc.inp 60 2e-05 0.804852847403
|
||||
xTB_LRraman.inp 60 2e-05 0.807352993847
|
||||
xTB_LRraman_loc.inp 60 2e-05 0.807352993847
|
||||
h2o_LRraman_LRI.inp 60 4e-04 0.004262309795
|
||||
#EOF
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
&SUBSYS
|
||||
&CELL
|
||||
ABC [bohr] 10. 10. 10.
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
UNIT bohr
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
&SUBSYS
|
||||
&CELL
|
||||
ABC [bohr] 10. 10. 10.
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
UNIT bohr
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
# 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
|
||||
CH2O_tddfpt_stda-s-1.inp 37 1.0E-05 0.349917E+00
|
||||
CH2Oplus_tddfpt_stda-lsd.inp 37 1.0E-05 0.212156E+00
|
||||
CH2O_tddfpt_stda-s-1.inp 37 1.0E-05 0.349892E+00
|
||||
CH2Oplus_tddfpt_stda-lsd.inp 37 1.0E-05 0.212147E+00
|
||||
CH2O_tddfpt_stda-pbe-s.inp 37 1.0E-05 0.125452E+00
|
||||
CH2O_tddfpt_stda-pbe-s_doexchange.inp 37 1.0E-05 0.155105E+00
|
||||
CH2O_tddfpt_stda-xtb-s.inp 37 1.0E-05 0.150482E+00
|
||||
|
|
@ -14,7 +14,7 @@ H2Oplus_tddfpt_stda-pbe-lsd.inp 37 1.0E-05
|
|||
H2O_tddfpt_stda-pbe-t.inp 37 1.0E-05 0.595565E+00
|
||||
H2O_tddfpt_stda-pbe0-s.inp 37 1.0E-05 0.637391E+00
|
||||
H2O_tddfpt_stda-pbe0-t.inp 37 1.0E-05 0.633489E+00
|
||||
H2O_tddfpt_stda-s-1.inp 37 1.0E-05 0.173064E+00
|
||||
H2O_tddfpt_stda-s-1.inp 37 1.0E-05 0.173021E+00
|
||||
NO_tddfpt_stda-s-1.inp 37 1.0E-05 0.375613E+00
|
||||
water_xTB.inp 37 2.0E-05 0.185374E+00
|
||||
water_xTBi_NTO.inp 37 2.0E-05 0.185374E+00
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ QS/regtest-p-efield
|
|||
QS/regtest-mp2-stress libint
|
||||
QS/regtest-ri-rpa libint
|
||||
QS/regtest-kg libxc
|
||||
QS/regtest-ec libint
|
||||
QS/regtest-ec libint libvori
|
||||
QS/regtest-ec-force libint
|
||||
QS/regtest-gpw-4
|
||||
QS/regtest-gpw-2-3
|
||||
|
|
@ -91,7 +91,7 @@ Fist/regtest-7-1
|
|||
QMMM/SE/regtest-force-mixing
|
||||
QS/regtest-gpw-8
|
||||
QS/regtest-ot
|
||||
QS/regtest-mp2-grad libint
|
||||
QS/regtest-mp2-grad libint libvori
|
||||
QS/regtest-plus_u
|
||||
QS/regtest-gpw-3
|
||||
QS/regtest-ps-implicit-1-3 fftw3
|
||||
|
|
@ -122,7 +122,7 @@ QS/regtest-tddfpt-stda libint
|
|||
QS/regtest-tddfpt-lri libint
|
||||
Fist/regtest-opt
|
||||
QS/regtest-nmr-6
|
||||
QS/regtest-gpw-1 libint
|
||||
QS/regtest-gpw-1 libint libvori
|
||||
QS/regtest-gapw-4 libint
|
||||
MC/regtest
|
||||
QS/regtest-ri-mp2 libint
|
||||
|
|
@ -148,7 +148,6 @@ QS/regtest-dft-vdw-corr-2 libxc libint
|
|||
QS/regtest-epr-1
|
||||
QS/regtest-lrigpw
|
||||
Fist/regtest-5
|
||||
xTB/regtest-3
|
||||
Fist/regtest-6
|
||||
QS/regtest-hybrid-4 libint libxc
|
||||
QS/regtest-mom-2 libint
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@
|
|||
&QS
|
||||
METHOD xTB
|
||||
EPS_DEFAULT 1.0E-12
|
||||
&xTB
|
||||
DO_EWALD T
|
||||
&END xTB
|
||||
&END QS
|
||||
&KPOINTS
|
||||
SCHEME GAMMA
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@
|
|||
&END
|
||||
&QS
|
||||
METHOD xTB
|
||||
&xTB
|
||||
DO_EWALD T
|
||||
&END xTB
|
||||
&END QS
|
||||
&SCF
|
||||
EPS_SCF 1.0E-8
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@
|
|||
&END
|
||||
&QS
|
||||
METHOD xTB
|
||||
&xTB
|
||||
DO_EWALD F
|
||||
&END xTB
|
||||
&END QS
|
||||
&SCF
|
||||
EPS_SCF 1.0E-8
|
||||
|
|
|
|||
|
|
@ -4,18 +4,18 @@
|
|||
# 1 compares the last total energy in the file
|
||||
# for details see cp2k/tools/do_regtest
|
||||
# test mulliken constraints
|
||||
H2O-field-gopt.inp 1 3e-11 -5.76900010512329
|
||||
H2O-field-gopt.inp 1 3e-11 -5.76960964769063
|
||||
H2O-field-gopt-lsd.inp 1 4e-12 -5.76960970095199
|
||||
H2O-field.inp 0 4e-13
|
||||
H2O-field-lsd.inp 1 4e-14 -5.76948986131183
|
||||
HF-field.inp 1 1e-12 -5.62817044142137
|
||||
HF-field-gopt.inp 1 5e-09 -5.66007154383399
|
||||
HF-field-gopt.inp 1 5e-09 -5.66333179696722
|
||||
HF-field-debug.inp 0 1e-12
|
||||
HF-dfilter-debug.inp 0 1e-12
|
||||
HF-dfield-gopt.inp 1 1e-09 -5.66113975858277
|
||||
HF-dfield.inp 1 1e-12 -5.66099020966660
|
||||
HF-dfield-debug.inp 0 1e-12
|
||||
HF-loc-field.inp 1 1e-12 -5.65286303322644
|
||||
HF-loc-field-gopt.inp 1 5e-09 -5.66976248371100
|
||||
HF-loc-field-gopt.inp 1 5e-09 -5.67065466488875
|
||||
HF-loc-field-debug.inp 0 1e-12
|
||||
#EOF
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
O 0.000000 0.000000 -0.065587
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ ch2o_loc.inp 1 1.0E-12 -13.55045387
|
|||
ch2o_mos.inp 1 1.0E-12 -7.84456570305607
|
||||
si_print.inp 1 1.0E-12 -14.75266668154365
|
||||
si_band.inp 1 1.0E-12 -14.75266668154365
|
||||
H2O-geo-pdos.inp 1 1.0E-12 -5.76984102056605
|
||||
H2O-geo-pdos.inp 1 1.0E-12 -5.76872484344198
|
||||
graphite-stm.inp 1 1.0E-12 -7.91352193418221
|
||||
si_dos.inp 1 1.0E-12 -14.75266668154365
|
||||
#EOF
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue