![]() |
Octopus
|
Definition at line 187 of file minimizer.F90.
Data Types | |
interface | loct_minimize |
interface | loct_minimize_direct |
Public Member Functions | |
subroutine | minimize_multidim (method, dim, x, step, line_tol, tolgrad, toldr, maxiter, f, write_iter_info, minimum, ierr) |
Private Member Functions | |
subroutine | oct_1dminimize (a, b, m, f, status) |
subroutine | minimize_multidim_nograd (method, dim, x, step, toldr, maxiter, f, write_iter_info, minimum, ierr) |
subroutine | minimize_multidim_nlopt (ierr, method, dim, x, step, toldr, maxiter, f, minimum, lb, ub) |
subroutine | minimize_sd (dim, x, step, maxiter, f, write_iter_info, minimum, ierr) |
subroutine | minimize_fire (dim, space_dim, x, step, tolgrad, maxiter, gradf, write_iter_info, en, ierr, mass, integrator) |
Implementation of the Fast Inertial Relaxation Engine (FIRE) More... | |
subroutine | prevent_large_changes (dim, space_dim, dr_i, dr_atoms) |
Prevents too large change in atomic coordinates. More... | |
|
private |
Definition at line 188 of file minimizer.F90.
|
private |
Definition at line 242 of file minimizer.F90.
|
private |
Definition at line 268 of file minimizer.F90.
subroutine minimizer_oct_m::loct_1dminimize::minimize_multidim | ( | integer, intent(in) | method, |
integer, intent(in) | dim, | ||
real(real64), dimension(:), intent(inout) | x, | ||
real(real64), intent(in) | step, | ||
real(real64), intent(in) | line_tol, | ||
real(real64), intent(in) | tolgrad, | ||
real(real64), intent(in) | toldr, | ||
integer, intent(in) | maxiter, | ||
procedure(minimizer_with_grad_i) | f, | ||
procedure(info_i) | write_iter_info, | ||
real(real64), intent(out) | minimum, | ||
integer, intent(out) | ierr | ||
) |
Definition at line 296 of file minimizer.F90.
|
private |
Definition at line 329 of file minimizer.F90.
|
private |
Implementation of the Fast Inertial Relaxation Engine (FIRE)
The algorithm is defined in Erik Bitzek, et al., Phys. Rev. Lett. 97, 170201 (2006).
As other minimizers, this is based on two external functions, f that computes the new positions and gradients, and write_iter_info that returns control to the calling code to write information for each iteration.
Following the original paper, any molecular dynamics integrator can be used, defined by integrator
Importantly, the code assumes the dim is a multiple of space_dim. This is used for internal dot products.
Further modifications of the algorithms are done following the LAMMPS paper: See J. Gu\U000000e9nol\U000000e9, et al. Computational Materials Science 175 (2020) 109584.
[in] | dim | Number of degrees of freedom. Assumed to be space_dim * N |
[in] | space_dim | Spatial dimensions |
[in,out] | x | Degrees of freedom to minimize x(1:dim) |
[in] | step | Time-step of the algorithm |
[in] | tolgrad | Tolerance for the gradient |
[in] | maxiter | Maximum number of iterations |
gradf | Get the new gradients given a new x | |
write_iter_info | Output for each iteration step | |
[in] | mass | Effective masses for the relaxation |
[in] | integrator | Molecular dynamics integrator for the velocity, see GOFireIntegrator |
Definition at line 378 of file minimizer.F90.
|
private |
Prevents too large change in atomic coordinates.
[in] | dim | Number of degrees of freedom. Assumed to be space_dim * N |
[in] | space_dim | Spatial dimensions |
Definition at line 562 of file minimizer.F90.