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:
Juerg Hutter 2019-06-14 18:18:04 +02:00 committed by GitHub
parent 5e37bfec97
commit d0d6bfb547
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 161 additions and 43 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1 @@
#

View file

@ -19,7 +19,6 @@
&END XTB
&END QS
&SCF
SCF_GUESS MOPAC
MAX_SCF 100
EPS_SCF 1.e-8
&MIXING

View file

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

View file

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

View file

@ -8,7 +8,6 @@
CUTOFF 100
&END MGRID
&SCF
SCF_GUESS MOPAC
MAX_SCF 100
EPS_SCF 1.e-8
&END SCF

View file

@ -8,7 +8,6 @@
CUTOFF 100
&END MGRID
&SCF
SCF_GUESS MOPAC
MAX_SCF 100
EPS_SCF 1.e-8
ADDED_MOS 10 10