A generic framework to calculate step lengths for 1D line search
source: linesearch.F...
REAL(dp), |
PUBLIC | :: | step_size = 0.0_DP | ... |
LOGICAL, |
PUBLIC | :: | starts = .FALSE. | ... |
TYPE(linesearch_adapt_type), |
POINTER | :: | state_adapt => NULL() | ... |
TYPE(linesearch_2pnt_type), |
POINTER | :: | state_2pnt => NULL() | ... |
TYPE(linesearch_3pnt_type), |
POINTER | :: | state_3pnt => NULL() | ... |
TYPE(linesearch_gold_type), |
POINTER | :: | state_gold => NULL() | ... |
INTEGER |
:: | iw = -1 | ... | |
INTEGER |
:: | method = -1 | ... | |
CHARACTER(10) |
:: | label = "" | ... | |
REAL(dp) |
:: | init_step_size = 0.0_DP | ... | |
REAL(dp) |
:: | eps_step_size = 0.0_DP | ... | |
REAL(dp) |
:: | max_step_size = 0.0_DP | ... | |
REAL(dp) |
:: | tiny_step_size = 0.0_DP | ... |
Declare the line search input section.
TYPE(section_type), |
POINTER |
:: | section | ... |
Finzalize line search machinery
TYPE(linesearch_type), |
INTENT(inout) |
:: | this | ... |
Initialize linesearch from given input section
TYPE(linesearch_type), |
INTENT(inout) |
:: | this | ... | |
TYPE(section_vals_type), |
POINTER |
:: | section | ... | |
CHARACTER(*) |
:: | label | ... |
Reset line search to initial state
TYPE(linesearch_type), |
INTENT(inout) |
:: | this | ... |
Calculate step length of next line search step.
TYPE(linesearch_type), |
INTENT(inout) |
:: | this | ... | |
REAL(dp), |
INTENT(in) |
:: | energy | ... | |
REAL(dp), |
INTENT(in) |
:: | slope | ... |
...
REAL(dp) |
:: | last_step_size = 0.0 | ... | |
REAL(dp) |
:: | left_x = 0.0 | ... | |
REAL(dp) |
:: | middle_x = 0.0 | ... | |
REAL(dp) |
:: | right_x = 0.0 | ... | |
REAL(dp) |
:: | left_e = 0.0 | ... | |
REAL(dp) |
:: | middle_e = 0.0 | ... | |
REAL(dp) |
:: | right_e = 0.0 | ... | |
LOGICAL |
:: | have_left = .FALSE. | ... | |
LOGICAL |
:: | have_middle = .FALSE. | ... | |
LOGICAL |
:: | have_right = .FALSE. | ... | |
INTEGER |
:: | count = 0 | ... |
...
REAL(dp) |
:: | scan_steps = 0.0 | ... | |
REAL(dp) |
:: | last_step_size = 0.0 | ... | |
REAL(dp) |
:: | eps_step_size = 0.0 | ... | |
REAL(dp) |
:: | left_x = 0.0 | ... | |
REAL(dp) |
:: | middle_x = 0.0 | ... | |
REAL(dp) |
:: | right_x = 0.0 | ... | |
REAL(dp) |
:: | left_e = 0.0 | ... | |
REAL(dp) |
:: | middle_e = 0.0 | ... | |
REAL(dp) |
:: | right_e = 0.0 | ... | |
LOGICAL |
:: | have_left = .FALSE. | ... | |
LOGICAL |
:: | have_middle = .FALSE. | ... | |
LOGICAL |
:: | have_right = .FALSE. | ... | |
LOGICAL |
:: | gave_up = .FALSE. | ... |