Skip to content

Commit

Permalink
Abort run by default on SCF convergence failure
Browse files Browse the repository at this point in the history
The new keyword IGNORE_CONVERGENCE_FAILURE can be set to obtain the old permissive behaviour.
It replaces the keyword NOTCONV_STOPALL which enforced until now the strict behaviour which is now the default.
  • Loading branch information
mkrack committed Dec 11, 2023
1 parent 2b286a5 commit e430776
Show file tree
Hide file tree
Showing 788 changed files with 1,540 additions and 893 deletions.
10 changes: 7 additions & 3 deletions src/input_cp2k_dft.F
Original file line number Diff line number Diff line change
Expand Up @@ -5210,9 +5210,13 @@ SUBROUTINE create_scf_section(section)
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)

CALL keyword_create(keyword, __LOCATION__, name="NOTCONV_STOPALL", &
description="If true, it stops higher level of iteration when SCF does not converge", &
usage="NOTCONV_STOPALL logical_value", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
CALL keyword_create(keyword, __LOCATION__, name="IGNORE_CONVERGENCE_FAILURE", &
description="If true, only a warning is issued if an SCF "// &
"iteration has not converged. By default, a run is aborted "// &
"if the required convergence criteria have not been achieved.", &
usage="IGNORE_CONVERGENCE_FAILURE logical_value", &
default_l_val=.FALSE., &
lone_keyword_l_val=.TRUE.)
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)

Expand Down
11 changes: 6 additions & 5 deletions src/qs_scf.F
Original file line number Diff line number Diff line change
Expand Up @@ -598,11 +598,12 @@ SUBROUTINE scf_env_do_scf(scf_env, scf_control, qs_env, converged, should_stop,
dft_control%qs_control%cdft_control%total_steps = &
dft_control%qs_control%cdft_control%total_steps + total_steps

IF (.NOT. converged) CPWARN("SCF run NOT converged")

IF (.NOT. converged .AND. scf_control%stop_higher_iter_level) THEN
logger%iter_info%last_iter(logger%iter_info%n_rlevel - 1) = .TRUE.
CPWARN("MD iteration also stops")
IF (.NOT. converged) THEN
IF (scf_control%ignore_convergence_failure) THEN
CPWARN("SCF run did NOT converge")
ELSE
CPABORT("SCF run did NOT converge")
END IF
END IF

! Skip Harris functional calculation if ground-state is NOT converged
Expand Down
7 changes: 4 additions & 3 deletions src/scf_control_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ MODULE scf_control_types
INTEGER :: max_scf, max_scf_hist, &
maxl, nkind
LOGICAL :: do_diag_sub, &
use_cholesky, use_ot, use_diag, do_outer_scf_reortho, stop_higher_iter_level
use_cholesky, use_ot, use_diag, do_outer_scf_reortho, &
ignore_convergence_failure
INTEGER, DIMENSION(2) :: added_mos
INTEGER :: roks_scheme
REAL(KIND=dp) :: roks_f
Expand Down Expand Up @@ -175,7 +176,7 @@ SUBROUTINE scf_c_create(scf_control)
scf_control%use_diag = .TRUE.
scf_control%do_diag_sub = .FALSE.
scf_control%use_ot = .FALSE.
scf_control%stop_higher_iter_level = .FALSE.
scf_control%ignore_convergence_failure = .FALSE.
scf_control%do_outer_scf_reortho = .TRUE.
scf_control%max_diis = 4
scf_control%eps_diis = 0.1_dp
Expand Down Expand Up @@ -334,7 +335,7 @@ SUBROUTINE scf_c_read_parameters(scf_control, inp_section)
IF (cholesky_flag > 0) THEN
scf_control%use_cholesky = .TRUE.
END IF
CALL section_vals_val_get(scf_section, "NOTCONV_STOPALL", l_val=scf_control%stop_higher_iter_level)
CALL section_vals_val_get(scf_section, "IGNORE_CONVERGENCE_FAILURE", l_val=scf_control%ignore_convergence_failure)
CALL section_vals_val_get(scf_section, "eps_scf", r_val=scf_control%eps_scf)
CALL section_vals_val_get(scf_section, "level_shift", r_val=scf_control%level_shift)
CALL section_vals_val_get(scf_section, "max_diis", i_val=scf_control%max_diis)
Expand Down
1 change: 1 addition & 0 deletions src/start/libcp2k_unittest.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ int main() {
fprintf(f, " &SCF\n");
fprintf(f, " EPS_DIIS 0.1\n");
fprintf(f, " EPS_SCF 1.0E-4\n");
fprintf(f, " IGNORE_CONVERGENCE_FAILURE\n");
fprintf(f, " MAX_DIIS 4\n");
fprintf(f, " MAX_SCF 3\n");
fprintf(f, " SCF_GUESS atomic\n");
Expand Down
1 change: 1 addition & 0 deletions src/start/python/sample_force_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
&SCF
EPS_DIIS 0.1
EPS_SCF 1.0E-4
IGNORE_CONVERGENCE_FAILURE
MAX_DIIS 4
MAX_SCF 3
SCF_GUESS atomic
Expand Down
1 change: 1 addition & 0 deletions src/start/python/test/test_force_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
&SCF
EPS_DIIS 0.1
EPS_SCF 1.0E-4
IGNORE_CONVERGENCE_FAILURE
MAX_DIIS 4
MAX_SCF 3
SCF_GUESS atomic
Expand Down
1 change: 1 addition & 0 deletions src/start/python/test/test_standalone.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
&SCF
EPS_DIIS 0.1
EPS_SCF 1.0E-4
IGNORE_CONVERGENCE_FAILURE
MAX_DIIS 4
MAX_SCF 3
SCF_GUESS atomic
Expand Down
1 change: 1 addition & 0 deletions tests/DFTB/regtest-scc/c2h2_emd_mix.inp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
METHOD DIRECT_P_MIXING
ALPHA 0.2
&END
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 20
&END SCF
&POISSON
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-4.inp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 20
SCF_GUESS ATOMIC
&OT ON
PRECONDITIONER NONE
&END OT
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-5.inp
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 20
SCF_GUESS ATOMIC
&OT ON
PRECONDITIONER NONE
&END OT
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-ot1.inp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&OT ON
MINIMIZER DIIS
PRECONDITIONER FULL_ALL
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-ot2.inp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&OT ON
MINIMIZER CG
LINESEARCH 2PNT
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-ot3.inp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&OT ON
MINIMIZER DIIS
PRECONDITIONER FULL_SINGLE_INVERSE
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-ot4.inp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&OT ON
MINIMIZER DIIS
PRECONDITIONER FULL_S_INVERSE
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-ot6.inp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS ATOMIC
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&OT ON
MINIMIZER CG
PRECONDITIONER NONE
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o-r.inp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS RESTART
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 20
SCF_GUESS RESTART
&END SCF
&END DFT
&SUBSYS
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/ch2o.inp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@
&END DFTB
&END QS
&SCF
SCF_GUESS RESTART
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 20
SCF_GUESS RESTART
&END SCF
&END DFT
&SUBSYS
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/h2o-2.inp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
&END DFTB
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS CORE
&MIXING
METHOD DIRECT_P_MIXING
ALPHA 0.2
&END
MAX_SCF 5
&END SCF
&POISSON
&EWALD
Expand Down
3 changes: 2 additions & 1 deletion tests/DFTB/regtest-scc/h2o-3.inp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
&END DFTB
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 5
SCF_GUESS ATOMIC
&MIXING
METHOD DIRECT_P_MIXING
ALPHA 0.2
&END
MAX_SCF 5
&OT ON
PRECONDITIONER NONE
&END OT
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-1/H2O-qmmm-gauss-13.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-1/H2O-qmmm-gauss-force-mixing-1.inp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
SCF_GUESS atomic
&END SCF
&XC
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-10.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-11.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-12.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-13.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-14.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-15.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-16.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-17.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-18.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-2.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-3.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-4.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-5.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-6.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-7.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-8.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
1 change: 1 addition & 0 deletions tests/QMMM/QS/regtest-2-erf/H2O-qmmm-gauss-14-geep-9.inp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
&QS
&END QS
&SCF
IGNORE_CONVERGENCE_FAILURE
MAX_SCF 2
SCF_GUESS atomic
&END SCF
Expand Down

0 comments on commit e430776

Please sign in to comment.