# CDFT_OPT

Parameters controlling optimization methods that are compatible only with CDFT based constraints (i.e. CDFT SCF is active). Specifically, the control parameters for the Broyden and Newton optimizers are defined in this section. [Edit on GitHub]

## Keywords

- BROYDEN_TYPE

- CONTINUE_LS

- FACTOR_LS

- JACOBIAN_FREQ

- JACOBIAN_RESTART

- JACOBIAN_STEP

- JACOBIAN_TYPE

- JACOBIAN_VECTOR

- MAX_LS

## Keyword descriptions

BROYDEN_TYPE: enum = BT1

  Usage: BROYDEN_TYPE BT1

  Valid values:

  - `BT1` Broyden’s first method, also known as the good method. The initial Jacobian is built from MD history if available. Otherwise switches to SD for one SCF iteration until a Jacobian can be built from the SCF history.

  - `BT1_EXPLICIT` Same as BT1, but computes the explicit Jacobian with finite differences. Requires a CDFT SCF procedure to be active.

  - `BT2` Same as BT1, but uses Broyden’s second method, also known as the bad method.

  - `BT2_EXPLICIT` Same as BT1_EXPLICIT, but using Broyden’s second method.

  - `BT1_LS` Same as BT1, but uses backtracking line search for optimizing the step size (see optimizer NEWTON_LS).

  - `BT1_EXPLICIT_LS` Same as BT1_EXPLICIT, but uses backtracking line search for optimizing the step size.

  - `BT2_LS` Same as BT2, but uses backtracking line search for optimizing the step size.

  - `BT2_EXPLICIT_LS` Same as BT2_EXPLICIT, but uses backtracking line search for optimizing the step size.

  Specifies the Broyden optimizer variant to use. [Edit on GitHub]

CONTINUE_LS: logical = F

  Lone keyword: `T`

  Usage: CONTINUE_LS TRUE

  Continue backtracking line search until MAX_LS steps are reached or the norm of the CDFT gradient no longer decreases. Default (false) behavior exits the line search procedure on the first step that the gradient decreases. [Edit on GitHub]

FACTOR_LS: real = 5.00000000E-001

  Usage: FACTOR_LS 0.5

  Control parameter for backtracking line search. The step size is reduced by this factor on every line search iteration. Value must be between 0 and 1 (exclusive). [Edit on GitHub]

JACOBIAN_FREQ: integer[2] = 1 1

  Usage: JACOBIAN_FREQ 1 1

  Defines parameters that control how often the explicit Jacobian is built, which is needed by some optimizers. Expects two values. The first value determines how many consecutive CDFT SCF iterations should skip a rebuild, whereas the latter how many MD steps. The values can be zero (meaning never rebuild) or positive. Both values cannot be zero. [Edit on GitHub]

JACOBIAN_RESTART: logical = F

  Lone keyword: `T`

  Usage: JACOBIAN_RESTART TRUE

  Restart the inverse Jacobian using the vector defined with keyword JACOBIAN_VECTOR. [Edit on GitHub]

JACOBIAN_STEP: real[ ] = 5.00000000E-003

  Usage: JACOBIAN_STEP 5.0E-3

  Step size to use in the calculation of the inverse Jacobian with finite differences. Expects one value for all constraints, or one value per constraint. [Edit on GitHub]

JACOBIAN_TYPE: enum = FD1

  Usage: JACOBIAN_TYPE FD1

  Valid values:

  - `FD1` First order forward difference (one extra energy evaluation per constraint).

  - `FD1_BACKWARD` First order backward difference (one extra energy evaluation per constraint).

  - `FD2` Second order forward difference (two extra energy evaluations per constraint).

  - `FD2_BACKWARD` Second order backward difference (two extra energy evaluations per constraint).

  - `FD1_CENTRAL` First order central difference (two extra energy evaluations per constraint).

  Finite difference method used to calculate the inverse Jacobian needed by some optimizers. Compatible only with CDFT constraints. [Edit on GitHub]

JACOBIAN_VECTOR: real[ ]

  Usage: JACOBIAN_VECTOR 1.0 0.0

  Defines the inverse Jacobian matrix. Useful for restarting calculations. Expects n^2 values where n is the total number of constraints. The matrix should be given in row major order. [Edit on GitHub]

MAX_LS: integer = 5

  Usage: MAX_LS 5

  The maximum number of backtracking line search steps to perform. [Edit on GitHub]