mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-29 06:35:28 -04:00
CORE guess for OT, xTB charge tests, xTB default guess = CORE (#414)
* xTB regtests refactored * Adjust debug settings * Adjust regtest target value * xTB: check for large atomic charges OT: make CORE initial guess available xTB: make CORE guess default * Release FM structure created in CORE guess * Adjust tolerance
This commit is contained in:
parent
5e37bfec97
commit
d0d6bfb547
15 changed files with 161 additions and 43 deletions
|
|
@ -113,6 +113,8 @@ MODULE cp_control_types
|
|||
LOGICAL :: xb_interaction
|
||||
LOGICAL :: coulomb_interaction
|
||||
LOGICAL :: tb3_interaction
|
||||
LOGICAL :: check_atomic_charges
|
||||
!
|
||||
REAL(KIND=dp) :: xb_radius
|
||||
!
|
||||
CHARACTER(LEN=default_string_length), &
|
||||
|
|
|
|||
|
|
@ -1096,6 +1096,9 @@ CONTAINS
|
|||
l_val=qs_control%xtb_control%coulomb_interaction)
|
||||
CALL section_vals_val_get(xtb_section, "TB3_INTERACTION", &
|
||||
l_val=qs_control%xtb_control%tb3_interaction)
|
||||
! Check for bad atomic charges
|
||||
CALL section_vals_val_get(xtb_section, "CHECK_ATOMIC_CHARGES", &
|
||||
l_val=qs_control%xtb_control%check_atomic_charges)
|
||||
IF (n_rep > 0) THEN
|
||||
ALLOCATE (qs_control%xtb_control%kab_param(3, n_rep))
|
||||
DO j = 1, n_rep
|
||||
|
|
|
|||
|
|
@ -183,6 +183,12 @@ CONTAINS
|
|||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="CHECK_ATOMIC_CHARGES", &
|
||||
description="Stop calculation if atomic charges are outside chemical range.", &
|
||||
usage="CHECK_ATOMIC_CHARGES T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
END SUBROUTINE create_xtb_control_section
|
||||
|
||||
! **************************************************************************************************
|
||||
|
|
|
|||
|
|
@ -20,9 +20,14 @@ MODULE qs_initial_guess
|
|||
copy_fm_to_dbcsr,&
|
||||
cp_dbcsr_sm_fm_multiply,&
|
||||
cp_fm_to_dbcsr_row_template
|
||||
USE cp_fm_cholesky, ONLY: cp_fm_cholesky_decompose
|
||||
USE cp_fm_struct, ONLY: cp_fm_struct_create,&
|
||||
cp_fm_struct_get,&
|
||||
cp_fm_struct_release,&
|
||||
cp_fm_struct_type
|
||||
USE cp_fm_types, ONLY: &
|
||||
cp_fm_create, cp_fm_get_submatrix, cp_fm_init_random, cp_fm_p_type, cp_fm_release, &
|
||||
cp_fm_set_all, cp_fm_set_submatrix, cp_fm_to_fm, cp_fm_type
|
||||
cp_fm_create, cp_fm_get_info, cp_fm_get_submatrix, cp_fm_init_random, cp_fm_p_type, &
|
||||
cp_fm_release, cp_fm_set_all, cp_fm_set_submatrix, cp_fm_to_fm, cp_fm_type
|
||||
USE cp_log_handling, ONLY: cp_get_default_logger,&
|
||||
cp_logger_get_default_io_unit,&
|
||||
cp_logger_type,&
|
||||
|
|
@ -129,15 +134,15 @@ CONTAINS
|
|||
CHARACTER(LEN=default_path_length) :: file_name, filename
|
||||
INTEGER :: atom_a, blk, density_guess, group, handle, homo, i, iatom, ic, icol, id_nr, &
|
||||
ikind, irow, iseed(4), ispin, istart_col, istart_row, j, last_read, n, n_cols, n_rows, &
|
||||
nao, natom, natoms, natoms_tmp, nelectron, nmo, nmo_tmp, not_read, nsgf, nspin, nvec, &
|
||||
ounit, qs_env_id, safe_density_guess, size_atomic_kind_set, z
|
||||
nao, natom, natoms, natoms_tmp, nblocks, nelectron, nmo, nmo_tmp, not_read, nsgf, nspin, &
|
||||
nvec, ounit, qs_env_id, safe_density_guess, size_atomic_kind_set, z
|
||||
INTEGER, ALLOCATABLE, DIMENSION(:) :: first_sgf, kind_of, last_sgf
|
||||
INTEGER, DIMENSION(2) :: nelectron_spin
|
||||
INTEGER, DIMENSION(:), POINTER :: atom_list, elec_conf, nelec_kind, &
|
||||
sort_kind
|
||||
LOGICAL :: did_guess, do_kpoints, do_std_diag, &
|
||||
exist, has_unit_metric, &
|
||||
natom_mismatch, ofgpw
|
||||
natom_mismatch, need_wm, ofgpw
|
||||
REAL(dp), ALLOCATABLE, DIMENSION(:, :) :: buff, buff2
|
||||
REAL(dp), DIMENSION(:, :), POINTER :: pdata
|
||||
REAL(KIND=dp) :: checksum, eps, length, maxocc, occ, &
|
||||
|
|
@ -147,6 +152,7 @@ CONTAINS
|
|||
TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
|
||||
TYPE(atomic_kind_type), POINTER :: atomic_kind
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: work1
|
||||
TYPE(cp_fm_struct_type), POINTER :: ao_ao_struct, ao_mo_struct
|
||||
TYPE(cp_fm_type), POINTER :: mo_coeff, moa, mob, ortho, sv, work2
|
||||
TYPE(cp_logger_type), POINTER :: logger
|
||||
TYPE(cp_para_env_type), POINTER :: para_env
|
||||
|
|
@ -224,24 +230,31 @@ CONTAINS
|
|||
do_std_diag = .FALSE.
|
||||
|
||||
safe_density_guess = atomic_guess
|
||||
IF (dft_control%qs_control%semi_empirical .OR. &
|
||||
dft_control%qs_control%dftb .OR. &
|
||||
dft_control%qs_control%xtb) THEN
|
||||
IF (dft_control%qs_control%semi_empirical .OR. dft_control%qs_control%dftb) THEN
|
||||
IF (density_guess == atomic_guess) density_guess = mopac_guess
|
||||
! in case we need to bail to a safe restart type later on
|
||||
safe_density_guess = mopac_guess
|
||||
END IF
|
||||
IF (dft_control%qs_control%xtb) THEN
|
||||
IF (do_kpoints) THEN
|
||||
IF (density_guess == atomic_guess) density_guess = mopac_guess
|
||||
safe_density_guess = mopac_guess
|
||||
ELSE
|
||||
IF (density_guess == atomic_guess) density_guess = core_guess
|
||||
safe_density_guess = core_guess
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF (scf_control%use_ot .AND. &
|
||||
(.NOT. ((density_guess == random_guess) .OR. &
|
||||
(density_guess == atomic_guess) .OR. &
|
||||
(density_guess == core_guess) .OR. &
|
||||
(density_guess == mopac_guess) .OR. &
|
||||
(density_guess == sparse_guess) .OR. &
|
||||
(((density_guess == restart_guess) .OR. &
|
||||
(density_guess == history_guess)) .AND. &
|
||||
(scf_control%level_shift == 0.0_dp))))) THEN
|
||||
CALL cp_abort(__LOCATION__, &
|
||||
"OT needs GUESS ATOMIC / RANDOM / SPARSE / RESTART / HISTORY RESTART: other options NYI")
|
||||
"OT needs GUESS ATOMIC / CORE / RANDOM / SPARSE / RESTART / HISTORY RESTART: other options NYI")
|
||||
END IF
|
||||
|
||||
! if a restart was requested, check that the file exists,
|
||||
|
|
@ -468,6 +481,35 @@ CONTAINS
|
|||
CPABORT("calculate_first_density_matrix: core_guess not implemented for k-points")
|
||||
ENDIF
|
||||
|
||||
IF (.NOT. ASSOCIATED(work1)) THEN
|
||||
need_wm = .TRUE.
|
||||
CPASSERT(.NOT. ASSOCIATED(work2))
|
||||
CPASSERT(.NOT. ASSOCIATED(ortho))
|
||||
ELSE
|
||||
need_wm = .FALSE.
|
||||
CPASSERT(ASSOCIATED(work2))
|
||||
END IF
|
||||
|
||||
IF (need_wm) THEN
|
||||
CALL get_mo_set(mo_set=mo_array(1)%mo_set, mo_coeff=moa)
|
||||
CALL cp_fm_get_info(moa, matrix_struct=ao_mo_struct)
|
||||
CALL cp_fm_struct_get(ao_mo_struct, nrow_global=nao, nrow_block=nblocks)
|
||||
CALL cp_fm_struct_create(fmstruct=ao_ao_struct, &
|
||||
nrow_block=nblocks, &
|
||||
ncol_block=nblocks, &
|
||||
nrow_global=nao, &
|
||||
ncol_global=nao, &
|
||||
template_fmstruct=ao_mo_struct)
|
||||
ALLOCATE (work1(1))
|
||||
NULLIFY (work1(1)%matrix)
|
||||
CALL cp_fm_create(work1(1)%matrix, ao_ao_struct)
|
||||
CALL cp_fm_create(work2, ao_ao_struct)
|
||||
CALL cp_fm_create(ortho, ao_ao_struct)
|
||||
CALL copy_dbcsr_to_fm(matrix_s_kp(1, 1)%matrix, ortho)
|
||||
CALL cp_fm_cholesky_decompose(ortho)
|
||||
CALL cp_fm_struct_release(ao_ao_struct)
|
||||
END IF
|
||||
|
||||
ispin = 1
|
||||
! Load core Hamiltonian into work matrix
|
||||
CALL copy_dbcsr_to_fm(h_core_sparse(1)%matrix, work1(ispin)%matrix)
|
||||
|
|
@ -507,6 +549,15 @@ CONTAINS
|
|||
CALL calculate_density_matrix(mo_array(ispin)%mo_set, p_rmpv(ispin)%matrix)
|
||||
END DO
|
||||
|
||||
! release intermediate matrices
|
||||
IF (need_wm) THEN
|
||||
CALL cp_fm_release(ortho)
|
||||
CALL cp_fm_release(work2)
|
||||
CALL cp_fm_release(work1(1)%matrix)
|
||||
DEALLOCATE (work1)
|
||||
NULLIFY (work1, work2, ortho)
|
||||
END IF
|
||||
|
||||
did_guess = .TRUE.
|
||||
END IF
|
||||
|
||||
|
|
|
|||
|
|
@ -20,13 +20,12 @@ MODULE scf_control_types
|
|||
cp_print_key_unit_nr
|
||||
USE cp_units, ONLY: cp_unit_from_cp2k
|
||||
USE input_constants, ONLY: &
|
||||
atomic_guess, core_guess, diag_ot, direct_p_mix, general_roks, high_spin_roks, &
|
||||
ot_algo_taylor_or_diag, outer_scf_basis_center_opt, outer_scf_cdft_constraint, &
|
||||
outer_scf_ddapc_constraint, outer_scf_none, outer_scf_optimizer_bisect, &
|
||||
outer_scf_optimizer_broyden, outer_scf_optimizer_diis, outer_scf_optimizer_newton, &
|
||||
outer_scf_optimizer_newton_ls, outer_scf_optimizer_none, outer_scf_optimizer_sd, &
|
||||
outer_scf_optimizer_secant, outer_scf_s2_constraint, smear_energy_window, &
|
||||
smear_fermi_dirac, smear_list
|
||||
atomic_guess, diag_ot, direct_p_mix, general_roks, high_spin_roks, ot_algo_taylor_or_diag, &
|
||||
outer_scf_basis_center_opt, outer_scf_cdft_constraint, outer_scf_ddapc_constraint, &
|
||||
outer_scf_none, outer_scf_optimizer_bisect, outer_scf_optimizer_broyden, &
|
||||
outer_scf_optimizer_diis, outer_scf_optimizer_newton, outer_scf_optimizer_newton_ls, &
|
||||
outer_scf_optimizer_none, outer_scf_optimizer_sd, outer_scf_optimizer_secant, &
|
||||
outer_scf_s2_constraint, smear_energy_window, smear_fermi_dirac, smear_list
|
||||
USE input_cp2k_dft, ONLY: create_scf_section
|
||||
USE input_enumeration_types, ONLY: enum_i2c,&
|
||||
enumeration_type
|
||||
|
|
@ -475,9 +474,6 @@ CONTAINS
|
|||
CALL section_vals_val_get(scf_section, "eps_scf_history", r_val=scf_control%eps_scf_hist)
|
||||
|
||||
IF (scf_control%level_shift /= 0.0_dp) scf_control%use_cholesky = .FALSE.
|
||||
IF (scf_control%use_ot .AND. (scf_control%density_guess == core_guess)) THEN
|
||||
CPABORT("SCF_GUESS CORE is not supported for OT")
|
||||
END IF
|
||||
|
||||
! Outer SCF subsection
|
||||
outer_scf_section => section_vals_get_subs_vals(scf_section, "OUTER_SCF")
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ MODULE xtb_matrices
|
|||
USE cp_dbcsr_operations, ONLY: dbcsr_allocate_matrix_set
|
||||
USE cp_dbcsr_output, ONLY: cp_dbcsr_write_sparse_matrix
|
||||
USE cp_log_handling, ONLY: cp_get_default_logger,&
|
||||
cp_logger_get_default_io_unit,&
|
||||
cp_logger_type
|
||||
USE cp_output_handling, ONLY: cp_p_file,&
|
||||
cp_print_key_finished_output,&
|
||||
|
|
@ -956,7 +957,8 @@ CONTAINS
|
|||
nimg, nkind, ns, nsgf, nspins
|
||||
INTEGER, DIMENSION(25) :: lao
|
||||
INTEGER, DIMENSION(5) :: occ
|
||||
REAL(KIND=dp) :: pc_ener, qmmm_el
|
||||
LOGICAL :: pass_check
|
||||
REAL(KIND=dp) :: achrg, chmax, pc_ener, qmmm_el
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: mcharge
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: aocg, charges
|
||||
TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
|
||||
|
|
@ -980,9 +982,11 @@ CONTAINS
|
|||
|
||||
NULLIFY (dft_control, logger, scf_section, matrix_p, particle_set, ks_env, &
|
||||
ks_matrix, rho, energy)
|
||||
logger => cp_get_default_logger()
|
||||
CPASSERT(ASSOCIATED(qs_env))
|
||||
|
||||
logger => cp_get_default_logger()
|
||||
iounit = cp_logger_get_default_io_unit(logger)
|
||||
|
||||
CALL get_qs_env(qs_env, &
|
||||
dft_control=dft_control, &
|
||||
atomic_kind_set=atomic_kind_set, &
|
||||
|
|
@ -1062,6 +1066,32 @@ CONTAINS
|
|||
|
||||
CALL efield_tb_matrix(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
|
||||
|
||||
IF (dft_control%qs_control%xtb_control%check_atomic_charges) THEN
|
||||
pass_check = .TRUE.
|
||||
DO ikind = 1, nkind
|
||||
CALL get_atomic_kind(atomic_kind_set(ikind), natom=na)
|
||||
CALL get_qs_kind(qs_kind_set(ikind), xtb_parameter=xtb_kind)
|
||||
CALL get_xtb_atom_param(xtb_kind, chmax=chmax)
|
||||
DO iatom = 1, na
|
||||
atom_a = atomic_kind_set(ikind)%atom_list(iatom)
|
||||
achrg = mcharge(atom_a)
|
||||
IF (ABS(achrg) > chmax) THEN
|
||||
IF (iounit > 0) THEN
|
||||
WRITE (iounit, "(A,A,I3,I6,A,F4.2,A,F6.2)") " Charge outside chemical range:", &
|
||||
" Kind Atom=", ikind, atom_a, " Limit=", chmax, " Charge=", achrg
|
||||
END IF
|
||||
pass_check = .FALSE.
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
IF (.NOT. pass_check) THEN
|
||||
CALL cp_warn(__LOCATION__, "Atomic charges outside chemical range were detected."// &
|
||||
" Switch-off CHECK_ATOMIC_CHARGES keyword in the &xTB section"// &
|
||||
" if you want to force to continue the calculation.")
|
||||
CPABORT("xTB Charges")
|
||||
END IF
|
||||
END IF
|
||||
|
||||
DEALLOCATE (mcharge, charges)
|
||||
END IF
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,29 @@ MODULE xtb_parameters
|
|||
2.42_dp, 2.11_dp, 2.01_dp, &
|
||||
1.90_dp, 1.84_dp, 1.83_dp, 1.80_dp, 1.80_dp, 1.51_dp, 0.96_dp, 1.54_dp, &
|
||||
1.83_dp, 1.50_dp, 1.50_dp, 1.50_dp, 1.50_dp, 1.50_dp, & ! Actinides
|
||||
1.50_dp, 1.50_dp,10.50_dp/)
|
||||
1.50_dp, 1.50_dp, 1.50_dp/)
|
||||
!&>
|
||||
|
||||
!&<
|
||||
! Charge Limits
|
||||
REAL(KIND=dp), DIMENSION(0:nelem), &
|
||||
PARAMETER, PRIVATE :: clmt = (/0.00_dp, & ! 0
|
||||
1.00_dp, 0.50_dp, & ! 2
|
||||
1.00_dp, 2.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 2.00_dp, 1.00_dp, 0.50_dp, & ! 10
|
||||
1.00_dp, 2.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 2.00_dp, 1.00_dp, 0.50_dp, & ! 18
|
||||
1.00_dp, 2.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 2.00_dp, 2.03_dp, 2.00_dp, 2.00_dp, 2.00_dp, 1.00_dp, 0.50_dp, & ! 36
|
||||
1.00_dp, 2.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 2.00_dp, 2.00_dp, 2.00_dp, 2.00_dp, 2.00_dp, 1.00_dp, 0.50_dp, & ! 54
|
||||
1.00_dp, 2.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, & ! Lanthanides
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
|
||||
2.00_dp, 2.00_dp, 2.00_dp, 2.00_dp, 2.00_dp, 1.00_dp, 0.50_dp, & ! 86
|
||||
1.00_dp, 2.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
|
||||
3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, & ! Actinides
|
||||
3.00_dp, 3.00_dp, 3.00_dp/)
|
||||
!&>
|
||||
|
||||
! *** Global parameters ***
|
||||
|
|
@ -449,6 +471,8 @@ CONTAINS
|
|||
param%kx = 0.1_dp*0.220000_dp
|
||||
END SELECT
|
||||
END IF
|
||||
! chmax
|
||||
param%chmax = clmt(i)
|
||||
END IF
|
||||
|
||||
END SUBROUTINE xtb_parameters_set
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ MODULE xtb_types
|
|||
REAL(KIND=dp), DIMENSION(5) :: zeta
|
||||
! AO to shell pointer
|
||||
INTEGER, DIMENSION(25) :: nao, lao
|
||||
! Upper limit of Mulliken charge
|
||||
REAL(KIND=dp) :: chmax
|
||||
END TYPE xtb_atom_type
|
||||
|
||||
! *** Public data types ***
|
||||
|
|
@ -120,6 +122,7 @@ CONTAINS
|
|||
xtb_parameter%zeta = 0.0_dp
|
||||
xtb_parameter%nao = 0
|
||||
xtb_parameter%lao = 0
|
||||
xtb_parameter%chmax = 0.0_dp
|
||||
|
||||
END SUBROUTINE allocate_xtb_atom_param
|
||||
|
||||
|
|
@ -168,10 +171,11 @@ CONTAINS
|
|||
!> \param zeta ...
|
||||
!> \param occupation ...
|
||||
!> \param electronegativity ...
|
||||
!> \param chmax ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE get_xtb_atom_param(xtb_parameter, symbol, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
|
||||
rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
|
||||
hen, zeta, occupation, electronegativity)
|
||||
hen, zeta, occupation, electronegativity, chmax)
|
||||
|
||||
TYPE(xtb_atom_type), POINTER :: xtb_parameter
|
||||
CHARACTER(LEN=2), INTENT(OUT), OPTIONAL :: symbol
|
||||
|
|
@ -187,7 +191,7 @@ CONTAINS
|
|||
INTEGER, DIMENSION(5), INTENT(OUT), OPTIONAL :: nval, lval
|
||||
REAL(KIND=dp), DIMENSION(5), INTENT(OUT), OPTIONAL :: kpoly, kappa, hen, zeta
|
||||
INTEGER, DIMENSION(5), INTENT(OUT), OPTIONAL :: occupation
|
||||
REAL(KIND=dp), INTENT(OUT), OPTIONAL :: electronegativity
|
||||
REAL(KIND=dp), INTENT(OUT), OPTIONAL :: electronegativity, chmax
|
||||
|
||||
CHARACTER(LEN=*), PARAMETER :: routineN = 'get_xtb_atom_param', &
|
||||
routineP = moduleN//':'//routineN
|
||||
|
|
@ -221,6 +225,7 @@ CONTAINS
|
|||
IF (PRESENT(kappa)) kappa = xtb_parameter%kappa
|
||||
IF (PRESENT(hen)) hen = xtb_parameter%hen
|
||||
IF (PRESENT(zeta)) zeta = xtb_parameter%zeta
|
||||
IF (PRESENT(chmax)) chmax = xtb_parameter%chmax
|
||||
|
||||
END SUBROUTINE get_xtb_atom_param
|
||||
|
||||
|
|
@ -252,10 +257,11 @@ CONTAINS
|
|||
!> \param zeta ...
|
||||
!> \param electronegativity ...
|
||||
!> \param occupation ...
|
||||
!> \param chmax ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE set_xtb_atom_param(xtb_parameter, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
|
||||
rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
|
||||
hen, zeta, electronegativity, occupation)
|
||||
hen, zeta, electronegativity, occupation, chmax)
|
||||
|
||||
TYPE(xtb_atom_type), POINTER :: xtb_parameter
|
||||
CHARACTER(LEN=default_string_length), INTENT(IN), &
|
||||
|
|
@ -271,6 +277,7 @@ CONTAINS
|
|||
REAL(KIND=dp), DIMENSION(5), INTENT(IN), OPTIONAL :: kpoly, kappa, hen, zeta
|
||||
REAL(KIND=dp), INTENT(IN), OPTIONAL :: electronegativity
|
||||
INTEGER, DIMENSION(5), INTENT(IN), OPTIONAL :: occupation
|
||||
REAL(KIND=dp), INTENT(IN), OPTIONAL :: chmax
|
||||
|
||||
CHARACTER(LEN=*), PARAMETER :: routineN = 'set_xtb_atom_param', &
|
||||
routineP = moduleN//':'//routineN
|
||||
|
|
@ -303,6 +310,7 @@ CONTAINS
|
|||
IF (PRESENT(kappa)) xtb_parameter%kappa = kappa
|
||||
IF (PRESENT(hen)) xtb_parameter%hen = hen
|
||||
IF (PRESENT(zeta)) xtb_parameter%zeta = zeta
|
||||
IF (PRESENT(chmax)) xtb_parameter%chmax = chmax
|
||||
|
||||
END SUBROUTINE set_xtb_atom_param
|
||||
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@
|
|||
# 1 compares the last total energy in the file
|
||||
# for details see cp2k/tools/do_regtest
|
||||
# QM/MM
|
||||
wdim_scc.inp 1 1.0E-14 -5.77017237045416
|
||||
wdim_nonscc.inp 1 1.0E-14 -5.77017237045416
|
||||
wdimmc_scc.inp 1 1.0E-14 -5.76659939304634
|
||||
wdimmc_nonscc.inp 1 1.0E-14 -5.76659939304634
|
||||
epc_1.inp 1 1.0E-14 -5.77019903371505
|
||||
epc_2.inp 1 1.0E-14 -5.77017237045416
|
||||
epc_3.inp 1 1.0E-14 -5.77019903371505
|
||||
epc_4.inp 1 1.0E-14 -5.77021119364704
|
||||
wdim_scc.inp 1 1.0E-14 -5.77017237051011
|
||||
wdim_nonscc.inp 1 1.0E-14 -5.77017237051011
|
||||
wdimmc_scc.inp 1 1.0E-14 -5.76659939309740
|
||||
wdimmc_nonscc.inp 1 1.0E-14 -5.76659939309740
|
||||
epc_1.inp 1 1.0E-14 -5.77019903377017
|
||||
epc_2.inp 1 1.0E-14 -5.77017237051011
|
||||
epc_3.inp 1 1.0E-14 -5.77019903377017
|
||||
epc_4.inp 1 1.0E-14 -5.77021119370205
|
||||
fdeb_1.inp 0
|
||||
fdeb_2.inp 0
|
||||
fdeb_3.inp 0
|
||||
|
|
|
|||
1
tests/QMMM/xTB/regtest/TEST_FILES_RESET
Normal file
1
tests/QMMM/xTB/regtest/TEST_FILES_RESET
Normal file
|
|
@ -0,0 +1 @@
|
|||
#
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
&END XTB
|
||||
&END QS
|
||||
&SCF
|
||||
SCF_GUESS MOPAC
|
||||
MAX_SCF 100
|
||||
EPS_SCF 1.e-8
|
||||
&MIXING
|
||||
|
|
|
|||
|
|
@ -5,17 +5,17 @@
|
|||
# for details see cp2k/tools/do_regtest
|
||||
# test mulliken constraints
|
||||
H2O-field-gopt.inp 1 3e-11 -5.76900010512329
|
||||
H2O-field-gopt-lsd.inp 1 4e-12 -5.76962022533468
|
||||
H2O-field-gopt-lsd.inp 1 4e-12 -5.76960970105321
|
||||
H2O-field.inp 0 4e-13
|
||||
H2O-field-lsd.inp 1 4e-14 -5.76948986139975
|
||||
HF-field.inp 1 1e-12 -5.62817044142931
|
||||
HF-field-gopt.inp 1 1e-10 -5.66007154649222
|
||||
HF-field-gopt.inp 1 5e-10 -5.660071543833
|
||||
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.66099020967573
|
||||
HF-dfield-debug.inp 0 1e-12
|
||||
HF-loc-field.inp 1 1e-12 -5.65286303322644
|
||||
HF-loc-field-gopt.inp 1 1e-12 -5.66976248351310
|
||||
HF-loc-field-gopt.inp 1 5e-10 -5.669762483711
|
||||
HF-loc-field-debug.inp 0 1e-12
|
||||
#EOF
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
NdF3.inp 1 1.0E-12 -16.30904020314352
|
||||
h2o_rtp.inp 1 1.0E-12 -5.76549019125162
|
||||
h2o_emd.inp 1 1.0E-12 -5.76683221361977
|
||||
si8_wan.inp 1 1.0E-12 -14.36403406085475
|
||||
si8_wan.inp 1 1.0E-12 -14.36403406798006
|
||||
si_kp.inp 1 1.0E-12 -14.75266668089111
|
||||
tmol.inp 1 1.0E-12 -41.90853885813247
|
||||
ch2o.inp 1 1.0E-12 -7.84456570305608
|
||||
ch2o_print.inp 1 1.0E-12 -7.84456570305608
|
||||
ch2o_cube.inp 1 1.0E-12 -7.21158537124034
|
||||
ch2o_cube.inp 1 1.0E-12 -7.84456570305607
|
||||
ch2o_loc.inp 1 1.0E-12 -13.55045387785839
|
||||
ch2o_mos.inp 1 1.0E-12 -7.21158537124034
|
||||
ch2o_mos.inp 1 1.0E-12 -7.84456570305607
|
||||
si_print.inp 1 1.0E-12 -14.75266668089325
|
||||
si_band.inp 1 1.0E-12 -14.75266668089325
|
||||
H2O-geo-pdos.inp 1 1.0E-12 -5.76984102059289
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
CUTOFF 100
|
||||
&END MGRID
|
||||
&SCF
|
||||
SCF_GUESS MOPAC
|
||||
MAX_SCF 100
|
||||
EPS_SCF 1.e-8
|
||||
&END SCF
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
CUTOFF 100
|
||||
&END MGRID
|
||||
&SCF
|
||||
SCF_GUESS MOPAC
|
||||
MAX_SCF 100
|
||||
EPS_SCF 1.e-8
|
||||
ADDED_MOS 10 10
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue