39 #include "../base/base_uses.f90"
44 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'geo_opt'
57 SUBROUTINE cp_geo_opt(force_env, globenv, eval_opt_geo, rm_restart_info)
59 TYPE(force_env_type),
POINTER :: force_env
60 TYPE(global_environment_type),
POINTER :: globenv
61 LOGICAL,
INTENT(IN),
OPTIONAL :: eval_opt_geo, rm_restart_info
63 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_geo_opt'
65 INTEGER :: handle, step_start_val
66 LOGICAL :: my_rm_restart_info
67 REAL(kind=
dp),
DIMENSION(:),
POINTER :: x0
68 TYPE(cp_logger_type),
POINTER :: logger
69 TYPE(gopt_f_type),
POINTER :: gopt_env
70 TYPE(gopt_param_type),
POINTER :: gopt_param
71 TYPE(section_vals_type),
POINTER :: geo_section, root_section
73 CALL timeset(routinen, handle)
75 cpassert(
ASSOCIATED(force_env))
76 cpassert(
ASSOCIATED(globenv))
77 NULLIFY (gopt_param, gopt_env, x0)
78 root_section => force_env%root_section
83 CALL gopt_f_create(gopt_env, gopt_param, force_env=force_env, globenv=globenv, &
84 geo_opt_section=geo_section, eval_opt_geo=eval_opt_geo)
89 CALL cp_iterate(logger%iter_info, iter_nr=step_start_val)
90 CALL cp_geo_opt_low(force_env, globenv, gopt_param, gopt_env, &
95 my_rm_restart_info = .true.
96 IF (
PRESENT(rm_restart_info)) my_rm_restart_info = rm_restart_info
97 IF (my_rm_restart_info) &
102 DEALLOCATE (gopt_param)
103 CALL timestop(handle)
115 TYPE(gopt_f_type),
POINTER :: gopt_env
116 REAL(kind=
dp),
DIMENSION(:),
POINTER :: x0
117 TYPE(gopt_param_type),
POINTER :: gopt_param
118 TYPE(section_vals_type),
POINTER :: geo_section
120 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_rot_opt'
122 INTEGER :: handle, step_start_val
123 TYPE(cp_logger_type),
POINTER :: logger
125 CALL timeset(routinen, handle)
127 cpassert(
ASSOCIATED(gopt_env))
128 cpassert(
ASSOCIATED(gopt_env%force_env))
129 cpassert(
ASSOCIATED(gopt_env%globenv))
133 CALL cp_iterate(logger%iter_info, iter_nr=step_start_val)
134 CALL cp_geo_opt_low(gopt_env%force_env, gopt_env%globenv, gopt_param, gopt_env, &
140 CALL timestop(handle)
153 SUBROUTINE cp_geo_opt_low(force_env, globenv, gopt_param, gopt_env, &
155 TYPE(force_env_type),
POINTER :: force_env
156 TYPE(global_environment_type),
POINTER :: globenv
157 TYPE(gopt_param_type),
POINTER :: gopt_param
158 TYPE(gopt_f_type),
POINTER :: gopt_env
159 TYPE(section_vals_type),
POINTER :: geo_section
160 REAL(kind=
dp),
DIMENSION(:),
POINTER :: x0
162 cpassert(
ASSOCIATED(force_env))
163 cpassert(
ASSOCIATED(globenv))
164 cpassert(
ASSOCIATED(gopt_param))
165 cpassert(
ASSOCIATED(gopt_env))
166 cpassert(
ASSOCIATED(x0))
167 cpassert(
ASSOCIATED(geo_section))
169 SELECT CASE (gopt_param%method_id)
172 geo_section, gopt_env, x0)
175 geo_section, gopt_env, x0)
177 CALL geoopt_cg(force_env, gopt_param, globenv, &
178 geo_section, gopt_env, x0)
183 END SUBROUTINE cp_geo_opt_low
Routines for Geometry optimization using BFGS algorithm.
recursive subroutine, public geoopt_bfgs(force_env, gopt_param, globenv, geo_section, gopt_env, x0)
Main driver for BFGS geometry optimizations.
Routines for Geometry optimization using Conjugate Gradients.
recursive subroutine, public geoopt_cg(force_env, gopt_param, globenv, geo_section, gopt_env, x0, do_update)
Driver for conjugate gradient optimization technique.
Main driver for L-BFGS optimizer.
subroutine, public geoopt_lbfgs(force_env, gopt_param, globenv, geo_section, gopt_env, x0)
...
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
subroutine, public cp_iterate(iteration_info, last, iter_nr, increment, iter_nr_out)
adds one to the actual iteration
subroutine, public cp_rm_iter_level(iteration_info, level_name, n_rlevel_att)
Removes an iteration level.
subroutine, public cp_add_iter_level(iteration_info, level_name, n_rlevel_new)
Adds an iteration level.
Interface for the force calculations.
performs geometry optimization
subroutine, public cp_geo_opt(force_env, globenv, eval_opt_geo, rm_restart_info)
Main driver to perform geometry optimization.
subroutine, public cp_rot_opt(gopt_env, x0, gopt_param, geo_section)
Main driver to perform rotation optimization for Dimer.
Define type storing the global information of a run. Keep the amount of stored data small....
contains a functional that calculates the energy and its derivatives for the geometry optimizer
subroutine, public gopt_f_create_x0(gopt_env, x0)
returns the value of the parameters for the actual configuration
contains a functional that calculates the energy and its derivatives for the geometry optimizer
recursive subroutine, public gopt_f_create(gopt_env, gopt_param, force_env, globenv, geo_opt_section, eval_opt_geo)
...
recursive subroutine, public gopt_f_release(gopt_env)
...
contains typo and related routines to handle parameters controlling the GEO_OPT module
subroutine, public gopt_param_read(gopt_param, gopt_section, type_id)
reads the parameters of the geopmetry optimizer
Defines the basic variable types.
integer, parameter, public dp