30 #include "../base/base_uses.f90"
35 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'glbopt_input'
47 TYPE(section_type),
POINTER :: swarm_section
49 TYPE(keyword_type),
POINTER :: keyword
50 TYPE(section_type),
POINTER :: glbopt_section, printkey
52 NULLIFY (glbopt_section, keyword, printkey)
54 CALL section_create(glbopt_section, __location__, name=
"GLOBAL_OPT", &
55 description=
"Section to control global geometry optimizations.", &
59 description=
"Methods to use for optimization.", &
61 enum_c_vals=s2a(
"MINIMA_HOPPING",
"MINIMA_CRAWLING"), &
62 enum_desc=s2a(
"Runs Minima-Hopping algorithm.", &
63 "Runs Minima-Crawling algorithm."), &
69 description=
"Target Energy, the optimization will quit once a lower potential energy is reached.", &
70 default_r_val=-1*huge(1.0_dp), type_of_var=
real_t, unit_str=
"hartree")
75 description=
"Number of bumps in potential energy after which MD runs ends.", &
80 CALL keyword_create(keyword, __location__, name=
"BUMP_STEPS_UPWARDS", &
81 description=
"Number of MD steps with potential energy increases required for a bump.", &
86 CALL keyword_create(keyword, __location__, name=
"BUMP_STEPS_DOWNWARDS", &
87 description=
"Number of MD steps with potential energy decreases required for a bump.", &
92 CALL keyword_create(keyword, __location__, name=
"FRAGMENTATION_THRESHOLD", &
93 description=
"Threshold for atom distance used for detecting fragmentation of clusters.", &
94 default_r_val=2.0_dp, unit_str=
"angstrom", type_of_var=
real_t)
105 printkey, __location__,
"PROGRESS_TRAJECTORY", &
106 description=
"Printkey to control the writting of the progress trajectory. "// &
107 "This trajectory contains the minima, which are lower in energy than the by then lowerest.", &
109 filename=
"", unit_str=
"angstrom")
113 CALL history_declare_input(glbopt_section)
114 CALL minhop_declare_input(glbopt_section)
115 CALL mincrawl_declare_input(glbopt_section)
126 SUBROUTINE history_declare_input(glbopt_section)
127 TYPE(section_type),
POINTER :: glbopt_section
129 TYPE(keyword_type),
POINTER :: keyword
130 TYPE(section_type),
POINTER :: history_section
132 NULLIFY (history_section, keyword)
134 CALL section_create(history_section, __location__, name=
"HISTORY", &
135 description=
"Section controlling the history of visited minima and "// &
136 "how minima are recognized at a later point.", &
139 CALL keyword_create(keyword, __location__, name=
"ENERGY_PRECISION", &
140 description=
"If the difference of two energies is below this threshold "// &
141 "they are considert equal.", &
142 default_r_val=1.0e-5_dp, type_of_var=
real_t)
146 CALL keyword_create(keyword, __location__, name=
"FINGERPRINT_PRECISION", &
147 description=
"If the euclidean distance of two fingerprints is below "// &
148 "this threshold, they are considert equal.", &
149 default_r_val=1.0e-2_dp, type_of_var=
real_t)
155 END SUBROUTINE history_declare_input
162 SUBROUTINE minhop_declare_input(glbopt_section)
163 TYPE(section_type),
POINTER :: glbopt_section
165 TYPE(keyword_type),
POINTER :: keyword
166 TYPE(section_type),
POINTER :: minhop_section
168 NULLIFY (minhop_section, keyword)
170 CALL section_create(minhop_section, __location__, name=
"MINIMA_HOPPING", &
171 description=
"Section controlling the Minima Hopping method.", &
176 description=
"Factor used to increase temperature when escape failed, "// &
177 "should be larger than 1.", &
178 default_r_val=1.1_dp, type_of_var=
real_t)
183 description=
"Factor used to increase temperature when escape found "// &
184 "known minima, should be larger than 1.", &
185 default_r_val=1.1_dp, type_of_var=
real_t)
190 description=
"Factor used to decrease temperature when escape succeeded, "// &
191 "should be smaller than 1.", &
192 default_r_val=1.0/1.1_dp, type_of_var=
real_t)
197 description=
"Factor used to decrease acceptance energy, when minima was accepted, "// &
198 "should be smaller than 1.", &
199 default_r_val=0.98_dp, type_of_var=
real_t)
204 description=
"Factor used to increase acceptance energy, when minima was rejected, "// &
205 "should be larger than 1.", &
206 default_r_val=1.0/0.98_dp, type_of_var=
real_t)
210 CALL keyword_create(keyword, __location__, name=
"E_ACCEPT_INIT", &
211 description=
"Initial value of acceptance energy", &
212 default_r_val=0.005_dp, type_of_var=
real_t, unit_str=
"hartree")
216 CALL keyword_create(keyword, __location__, name=
"TEMPERATURE_INIT", &
217 description=
"Initially temperature in Kelvin", &
218 default_r_val=100.0_dp, type_of_var=
real_t)
222 CALL keyword_create(keyword, __location__, name=
"SHARE_HISTORY", &
223 description=
"If set all worker will use a single share history of visited minima.", &
224 default_l_val=.false., lone_keyword_l_val=.true.)
230 END SUBROUTINE minhop_declare_input
237 SUBROUTINE mincrawl_declare_input(glbopt_section)
238 TYPE(section_type),
POINTER :: glbopt_section
240 TYPE(keyword_type),
POINTER :: keyword
241 TYPE(section_type),
POINTER :: mincrawl_section, printkey
243 NULLIFY (mincrawl_section, keyword, printkey)
245 CALL section_create(mincrawl_section, __location__, name=
"MINIMA_CRAWLING", &
246 description=
"Section controls Minima Crawling run.", &
249 CALL keyword_create(keyword, __location__, name=
"TEMPSTEP_BASE", &
250 description=
"Base used to calculate temperature steps base**n", &
251 default_r_val=1.1_dp, type_of_var=
real_t)
256 description=
"Maximum number of temperature steps.", &
257 default_i_val=100, type_of_var=
integer_t)
261 CALL keyword_create(keyword, __location__, name=
"TEMPDIST_UPDATE_WIDTH", &
262 description=
"Width of gaussian used to update temperature distribution.", &
263 default_r_val=2.0_dp, type_of_var=
real_t)
267 CALL keyword_create(keyword, __location__, name=
"TEMPDIST_UPDATE_HEIGHT", &
268 description=
"Height of gaussian used to update temperature distribution.", &
269 default_r_val=0.1_dp, type_of_var=
real_t)
273 CALL keyword_create(keyword, __location__, name=
"TEMPERATURE_INIT", &
274 description=
"Initial temperature in Kelvin", &
275 default_r_val=100.0_dp, type_of_var=
real_t)
279 CALL keyword_create(keyword, __location__, name=
"TEMPDIST_INIT_WIDTH", &
280 description=
"Initial width of temperature distribution.", &
281 default_r_val=5.0_dp, type_of_var=
real_t)
285 CALL keyword_create(keyword, __location__, name=
"WORKER_PER_MINIMA", &
286 description=
"Maximum number of active workers per Minima.", &
291 CALL keyword_create(keyword, __location__, name=
"ESCAPE_HISTORY_LENGTH", &
292 description=
"Number of escapes averaged for scoring of minima.", &
298 description=
"Printkey to control the writting of the minima trajectory. "// &
299 "This trajectory contains all encountered local minima.", &
301 filename=
"", unit_str=
"angstrom")
307 END SUBROUTINE mincrawl_declare_input
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public goedecker2004
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public low_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
Defines the basic variable types.
integer, parameter, public dp
Utilities for string manipulations.