PAO: Abort on convergence failure

This commit is contained in:
Ole Schütt 2026-02-08 14:26:49 +01:00 committed by Ole Schütt
parent 991d15c049
commit 0a876ee833
10 changed files with 25 additions and 1 deletions

View file

@ -101,6 +101,9 @@ CONTAINS
CALL section_vals_val_get(pao_section, "MAX_CYCLES", i_val=pao%max_cycles)
IF (pao%iw > 0) WRITE (pao%iw, "(A,T40,A,T70,I11)") " PAO|", "MAX_CYCLES", pao%max_cycles
CALL section_vals_val_get(pao_section, "IGNORE_CONVERGENCE_FAILURE", l_val=pao%ignore_convergence_failure)
IF (pao%iw > 0) WRITE (pao%iw, "(A,T40,A,T70,L11)") " PAO|", "IGNORE_CONVERGENCE_FAILURE", pao%ignore_convergence_failure
CALL section_vals_val_get(pao_section, "PARAMETERIZATION", i_val=pao%parameterization)
IF (pao%iw > 0) WRITE (pao%iw, "(A,T40,A,T70,A11)") " PAO|", "PARAMETERIZATION", id2str(pao%parameterization)
@ -296,6 +299,15 @@ CONTAINS
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
CALL keyword_create(keyword, __LOCATION__, name="IGNORE_CONVERGENCE_FAILURE", &
description="If true, only a warning is issued if a PAO "// &
"optimization 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)
! Parametrization **********************************************************
CALL keyword_create(keyword, __LOCATION__, name="PARAMETERIZATION", &
description="Parametrization of the mapping between the primary and the PAO basis.", &

View file

@ -285,7 +285,11 @@ CONTAINS
! check for early abort without convergence?
CALL external_control(should_stop, "PAO", start_time=qs_env%start_time, target_time=qs_env%target_time)
IF (should_stop .OR. pao%istep >= pao%max_pao) THEN
CPWARN("PAO not converged!")
IF (pao%ignore_convergence_failure) THEN
CPWARN("PAO not converged!")
ELSE
CPABORT("PAO not converged!")
END IF
pao_is_done = .TRUE.
EXIT
END IF

View file

@ -168,6 +168,7 @@ MODULE pao_types
INTEGER :: optimizer = -1
INTEGER :: cg_init_steps = -1
LOGICAL :: precondition = .FALSE.
LOGICAL :: ignore_convergence_failure = .FALSE.
CHARACTER(LEN=default_path_length) :: preopt_dm_file = ""
CHARACTER(LEN=default_path_length) :: restart_file = ""
TYPE(filename_type), DIMENSION(:), ALLOCATABLE :: ml_training_set

View file

@ -18,6 +18,7 @@
&PAO
CHECK_GRADIENT_TOL 1.0E-6
EPS_PAO 1.0E-5
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 1
NUM_GRADIENT_ORDER 6
PARAMETERIZATION EQUIVARIANT

View file

@ -18,6 +18,7 @@
&PAO
CHECK_GRADIENT_TOL 1.0E-6
EPS_PAO 1.0E-5
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 1
NUM_GRADIENT_ORDER 6
PARAMETERIZATION EXP

View file

@ -18,6 +18,7 @@
&PAO
CHECK_GRADIENT_TOL 1.0E-6
EPS_PAO 1.0E-5
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 1
NUM_GRADIENT_ORDER 4
PARAMETERIZATION FOCK

View file

@ -19,6 +19,7 @@
&PAO
CHECK_GRADIENT_TOL 1.0E-6
EPS_PAO 1.0E-5
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 1
NUM_GRADIENT_ORDER 4
PARAMETERIZATION GTH

View file

@ -18,6 +18,7 @@
&PAO
CHECK_GRADIENT_TOL 1.0E-6
EPS_PAO 1.0E-5
IGNORE_CONVERGENCE_FAILURE
LINPOT_INITGUESS_DELTA 0.1
MAX_PAO 1
NUM_GRADIENT_ORDER 2

View file

@ -18,6 +18,7 @@
S_PRECONDITIONER NONE
&PAO
CHECK_GRADIENT_TOL 1.0E-6
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 1
PARAMETERIZATION FOCK
PREOPT_DM_FILE H2O_ref_LS_DM_SPIN_1_RESTART.dm

View file

@ -28,6 +28,7 @@
S_PRECONDITIONER NONE
&PAO
EPS_PAO 1.0E-6
IGNORE_CONVERGENCE_FAILURE
MAX_PAO 100
PARAMETERIZATION EXP
PENALTY_STRENGTH 0.0