Section Calculation Modes::Optimal Control
If OCTTargetOperator = oct_tg_velocity, and OCTScheme = oct_cg or OCTScheme = oct_bfgs then you must supply the target in terms of the ionic velocities AND the derivatives of the target with respect to the ionic velocity components. The derivatives are supplied via strings through the block OCTVelocityDerivatives. Each velocity component is supplied by "v[n_atom,vec_comp]", while n_atom is the atom number, corresponding to the Coordinates block, and vec_comp is the corresponding vector component of the velocity. The first line of the OCTVelocityDerivatives block contains the derivatives with respect to v[1,], the second with respect to v[2,] and so on. The first column contains all derivatives with respect v[,1], the second with respect to v[,2] and the third w.r.t. v[*,3]. As an example, we show the OCTVelocityDerivatives block corresponding to the target shown in the OCTVelocityTarget help section:
" 2*(v[1,1]-v[2,1])" | " 2*(v[1,2]-v[2,2])" | " 2*(v[1,3]-v[2,3])"
"-2*(v[1,1]-v[2,1])" | "-2*(v[1,2]-v[2,2])" | "-2*(v[1,3]-v[2,3])"
opt_control/target_velocity_inc.F90 : 111
if (parse_block(namespace, 'OCTVelocityDerivatives', blk) == 0) then