Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \par History
10 : !> - taken out of input_cp2k_motion
11 : !> \author teo & fawzi
12 : ! **************************************************************************************************
13 : MODULE input_cp2k_colvar
14 : USE bibliography, ONLY: Branduardi2007,&
15 : Zhang2025
16 : USE colvar_types, ONLY: &
17 : do_clv_fix_point, do_clv_geo_center, do_clv_x, do_clv_xy, do_clv_xyz, do_clv_xz, do_clv_y, &
18 : do_clv_yz, do_clv_z, plane_def_atoms, plane_def_vec
19 : USE cp_output_handling, ONLY: add_last_numeric,&
20 : cp_print_key_section_create,&
21 : high_print_level,&
22 : low_print_level
23 : USE cp_units, ONLY: cp_unit_to_cp2k
24 : USE fparser, ONLY: docf
25 : USE generic_function_input, ONLY: create_function_section
26 : USE input_constants, ONLY: gaussian,&
27 : numerical,&
28 : rmsd_all,&
29 : rmsd_list,&
30 : rmsd_weightlist
31 : USE input_keyword_types, ONLY: keyword_create,&
32 : keyword_release,&
33 : keyword_type
34 : USE input_section_types, ONLY: section_add_keyword,&
35 : section_add_subsection,&
36 : section_create,&
37 : section_release,&
38 : section_type
39 : USE input_val_types, ONLY: char_t,&
40 : integer_t,&
41 : lchar_t,&
42 : real_t
43 : USE kinds, ONLY: dp
44 : USE string_utilities, ONLY: newline,&
45 : s2a
46 : #include "./base/base_uses.f90"
47 :
48 : IMPLICIT NONE
49 : PRIVATE
50 :
51 : LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .FALSE.
52 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_colvar'
53 :
54 : PUBLIC :: create_colvar_section, &
55 : create_colvar_xyz_d_section, &
56 : create_colvar_xyz_od_section
57 :
58 : CONTAINS
59 :
60 : ! **************************************************************************************************
61 : !> \brief creates the colvar section
62 : !> \param section the section to be created
63 : !> \param skip_recursive_colvar ...
64 : !> \author teo
65 : ! **************************************************************************************************
66 5848 : RECURSIVE SUBROUTINE create_colvar_section(section, skip_recursive_colvar)
67 : TYPE(section_type), POINTER :: section
68 : LOGICAL, OPTIONAL :: skip_recursive_colvar
69 :
70 : LOGICAL :: skip
71 : TYPE(section_type), POINTER :: print_key, subsection
72 :
73 5848 : skip = .FALSE.
74 5848 : IF (PRESENT(skip_recursive_colvar)) skip = skip_recursive_colvar
75 5848 : CPASSERT(.NOT. ASSOCIATED(section))
76 : CALL section_create(section, __LOCATION__, name="COLVAR", &
77 : description="This section specifies the nature of the collective variables.", &
78 5848 : n_keywords=1, n_subsections=1, repeats=.TRUE.)
79 5848 : NULLIFY (subsection, print_key)
80 :
81 : CALL create_colvar_var_section(subsection=subsection, &
82 5848 : section=section, skip_recursive_colvar=skip)
83 :
84 : CALL section_create(subsection, __LOCATION__, name="PRINT", &
85 : description="Controls the printing of the colvar specifications", &
86 5848 : n_keywords=0, n_subsections=1, repeats=.TRUE.)
87 5848 : NULLIFY (print_key)
88 : CALL cp_print_key_section_create(print_key, __LOCATION__, "PROGRAM_RUN_INFO", &
89 : description="Controls the printing of basic information during colvar setup.", &
90 5848 : print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
91 5848 : CALL section_add_subsection(subsection, print_key)
92 5848 : CALL section_release(print_key)
93 5848 : CALL section_add_subsection(section, subsection)
94 5848 : CALL section_release(subsection)
95 :
96 5848 : CALL create_clv_info_section(subsection)
97 5848 : CALL section_add_subsection(section, subsection)
98 5848 : CALL section_release(subsection)
99 :
100 5848 : END SUBROUTINE create_colvar_section
101 :
102 : ! **************************************************************************************************
103 : !> \brief Create the restart section for colvar restraints
104 : !> This section will be only used for restraint restarts.
105 : !> Constraints are handled automatically
106 : !> \param section the section to create
107 : !> \author Teodoro Laino 08.2006
108 : ! **************************************************************************************************
109 5848 : SUBROUTINE create_clv_info_section(section)
110 : TYPE(section_type), POINTER :: section
111 :
112 : TYPE(keyword_type), POINTER :: keyword
113 :
114 5848 : CPASSERT(.NOT. ASSOCIATED(section))
115 5848 : NULLIFY (keyword)
116 : CALL section_create(section, __LOCATION__, name="COLVAR_FUNC_INFO", &
117 : description="Specify further data possibly used by colvars, depending "// &
118 : "on the starting geometry, for computing the functions value.", &
119 5848 : n_subsections=0, repeats=.FALSE.)
120 :
121 : CALL keyword_create(keyword, __LOCATION__, name="_DEFAULT_KEYWORD_", &
122 : description="Colvar function data."// &
123 : " The order is an internal order. So if you decide to edit/modify/add these values by hand"// &
124 : " you should know very well what you are doing.!", repeats=.TRUE., &
125 5848 : usage="{Real} ...", type_of_var=real_t, n_var=-1)
126 5848 : CALL section_add_keyword(section, keyword)
127 5848 : CALL keyword_release(keyword)
128 :
129 5848 : END SUBROUTINE create_clv_info_section
130 :
131 : ! **************************************************************************************************
132 : !> \brief creates the collective variables for the colvar section
133 : !> \param subsection ...
134 : !> \param section the section to be created
135 : !> \param skip_recursive_colvar ...
136 : !> \author teo
137 : ! **************************************************************************************************
138 5848 : RECURSIVE SUBROUTINE create_colvar_var_section(subsection, section, skip_recursive_colvar)
139 : TYPE(section_type), POINTER :: subsection, section
140 : LOGICAL, INTENT(IN) :: skip_recursive_colvar
141 :
142 5848 : CPASSERT(.NOT. ASSOCIATED(subsection))
143 5848 : CPASSERT(ASSOCIATED(section))
144 :
145 5848 : CALL create_colvar_dist_section(subsection)
146 5848 : CALL section_add_subsection(section, subsection)
147 5848 : CALL section_release(subsection)
148 :
149 5848 : CALL create_colvar_angle_section(subsection)
150 5848 : CALL section_add_subsection(section, subsection)
151 5848 : CALL section_release(subsection)
152 :
153 5848 : CALL create_colvar_torsion_section(subsection)
154 5848 : CALL section_add_subsection(section, subsection)
155 5848 : CALL section_release(subsection)
156 :
157 5848 : CALL create_colvar_coord_section(subsection)
158 5848 : CALL section_add_subsection(section, subsection)
159 5848 : CALL section_release(subsection)
160 :
161 5848 : CALL create_colvar_pop_section(subsection)
162 5848 : CALL section_add_subsection(section, subsection)
163 5848 : CALL section_release(subsection)
164 :
165 5848 : CALL create_colvar_gyr_section(subsection)
166 5848 : CALL section_add_subsection(section, subsection)
167 5848 : CALL section_release(subsection)
168 :
169 5848 : CALL create_colvar_d_pl_section(subsection)
170 5848 : CALL section_add_subsection(section, subsection)
171 5848 : CALL section_release(subsection)
172 :
173 5848 : CALL create_colvar_a_pl_section(subsection)
174 5848 : CALL section_add_subsection(section, subsection)
175 5848 : CALL section_release(subsection)
176 :
177 5848 : CALL create_colvar_rot_section(subsection)
178 5848 : CALL section_add_subsection(section, subsection)
179 5848 : CALL section_release(subsection)
180 :
181 5848 : CALL create_colvar_dfunct_section(subsection)
182 5848 : CALL section_add_subsection(section, subsection)
183 5848 : CALL section_release(subsection)
184 :
185 5848 : CALL create_colvar_qparm_section(subsection)
186 5848 : CALL section_add_subsection(section, subsection)
187 5848 : CALL section_release(subsection)
188 :
189 5848 : CALL create_colvar_hydronium_shell_section(subsection)
190 5848 : CALL section_add_subsection(section, subsection)
191 5848 : CALL section_release(subsection)
192 :
193 5848 : CALL create_colvar_hydronium_dist_section(subsection)
194 5848 : CALL section_add_subsection(section, subsection)
195 5848 : CALL section_release(subsection)
196 :
197 5848 : CALL create_colvar_acid_hyd_dist_section(subsection)
198 5848 : CALL section_add_subsection(section, subsection)
199 5848 : CALL section_release(subsection)
200 :
201 5848 : CALL create_colvar_acid_hyd_shell_section(subsection)
202 5848 : CALL section_add_subsection(section, subsection)
203 5848 : CALL section_release(subsection)
204 :
205 5848 : CALL create_colvar_rmsd_section(subsection)
206 5848 : CALL section_add_subsection(section, subsection)
207 5848 : CALL section_release(subsection)
208 :
209 5848 : CALL create_colvar_xyz_d_section(subsection)
210 5848 : CALL section_add_subsection(section, subsection)
211 5848 : CALL section_release(subsection)
212 :
213 5848 : CALL create_colvar_xyz_od_section(subsection)
214 5848 : CALL section_add_subsection(section, subsection)
215 5848 : CALL section_release(subsection)
216 :
217 5848 : CALL create_colvar_u_section(subsection)
218 5848 : CALL section_add_subsection(section, subsection)
219 5848 : CALL section_release(subsection)
220 :
221 5848 : CALL create_colvar_wc_section(subsection)
222 5848 : CALL section_add_subsection(section, subsection)
223 5848 : CALL section_release(subsection)
224 :
225 5848 : CALL create_colvar_hbp_section(subsection)
226 5848 : CALL section_add_subsection(section, subsection)
227 5848 : CALL section_release(subsection)
228 :
229 5848 : CALL create_colvar_ring_puckering_section(subsection)
230 5848 : CALL section_add_subsection(section, subsection)
231 5848 : CALL section_release(subsection)
232 :
233 5848 : CALL create_colvar_cond_dist_section(subsection)
234 5848 : CALL section_add_subsection(section, subsection)
235 5848 : CALL section_release(subsection)
236 :
237 5848 : CALL create_voronoiipz_section(subsection)
238 5848 : CALL section_add_subsection(section, subsection)
239 5848 : CALL section_release(subsection)
240 :
241 5848 : IF (.NOT. skip_recursive_colvar) THEN
242 1462 : CALL create_colvar_rpath_section(subsection)
243 1462 : CALL section_add_subsection(section, subsection)
244 1462 : CALL section_release(subsection)
245 :
246 1462 : CALL create_colvar_dpath_section(subsection)
247 1462 : CALL section_add_subsection(section, subsection)
248 1462 : CALL section_release(subsection)
249 :
250 1462 : CALL create_colvar_comb_section(subsection)
251 1462 : CALL section_add_subsection(section, subsection)
252 1462 : CALL section_release(subsection)
253 : END IF
254 :
255 5848 : END SUBROUTINE create_colvar_var_section
256 :
257 : ! **************************************************************************************************
258 : !> \brief collective variables specifying coordination
259 : !> \param section the section to be created
260 : !> \author teo
261 : ! **************************************************************************************************
262 5848 : SUBROUTINE create_colvar_coord_section(section)
263 : TYPE(section_type), POINTER :: section
264 :
265 : TYPE(keyword_type), POINTER :: keyword
266 : TYPE(section_type), POINTER :: subsection
267 :
268 5848 : CPASSERT(.NOT. ASSOCIATED(section))
269 : CALL section_create(section, __LOCATION__, name="coordination", &
270 : description="Section to define the coordination number as a collective variable.", &
271 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
272 :
273 5848 : NULLIFY (subsection, keyword)
274 :
275 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_FROM", &
276 : variants=["POINTS_FROM"], &
277 : description="Specify indexes of atoms/points building the coordination variable. ", &
278 : usage="ATOMS_FROM {integer} {integer} ..", repeats=.TRUE., &
279 11696 : n_var=-1, type_of_var=integer_t)
280 5848 : CALL section_add_keyword(section, keyword)
281 5848 : CALL keyword_release(keyword)
282 :
283 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_TO", &
284 : variants=["POINTS_TO"], &
285 : description="Specify indexes of atoms/points building the coordination variable. ", &
286 : usage="ATOMS_TO {integer} {integer} ..", repeats=.TRUE., &
287 11696 : n_var=-1, type_of_var=integer_t)
288 5848 : CALL section_add_keyword(section, keyword)
289 5848 : CALL keyword_release(keyword)
290 :
291 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_TO_B", &
292 : variants=["POINTS_TO_B"], &
293 : description="For the CV given by the multiplication of two coorination numbers,"// &
294 : " here specify indexes of the third set of atoms/points. ", &
295 : usage="ATOMS_TO_B {integer} {integer} ..", repeats=.TRUE., &
296 11696 : n_var=-1, type_of_var=integer_t)
297 5848 : CALL section_add_keyword(section, keyword)
298 5848 : CALL keyword_release(keyword)
299 :
300 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_FROM", &
301 : description="Specify alternatively kinds of atoms building the coordination variable.", &
302 : usage="KINDS_FROM {CHAR} {CHAR} ..", repeats=.TRUE., &
303 5848 : n_var=-1, type_of_var=char_t)
304 5848 : CALL section_add_keyword(section, keyword)
305 5848 : CALL keyword_release(keyword)
306 :
307 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_TO", &
308 : description="Specify alternatively kinds of atoms building the coordination variable.", &
309 : usage="KINDS_TO {CHAR} {CHAR} ..", repeats=.TRUE., &
310 5848 : n_var=-1, type_of_var=char_t)
311 5848 : CALL section_add_keyword(section, keyword)
312 5848 : CALL keyword_release(keyword)
313 :
314 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_TO_B", &
315 : description="For the CV given by the multiplication of two coorination numbers,"// &
316 : " here specify alternatively kinds of atoms building the coordination variable.", &
317 : usage="KINDS_TO_B {CHAR} {CHAR} ..", repeats=.TRUE., &
318 5848 : n_var=-1, type_of_var=char_t)
319 5848 : CALL section_add_keyword(section, keyword)
320 5848 : CALL keyword_release(keyword)
321 :
322 : ! Must be present in each colvar and handled properly
323 5848 : CALL create_point_section(subsection)
324 5848 : CALL section_add_subsection(section, subsection)
325 5848 : CALL section_release(subsection)
326 :
327 : CALL keyword_create(keyword, __LOCATION__, name="R0", &
328 : variants=["R_0"], &
329 : description="Specify the R0 parameter in the coordination function.", &
330 : usage="R0 {real}", default_r_val=3.0_dp, &
331 11696 : unit_str="bohr", n_var=1)
332 5848 : CALL section_add_keyword(section, keyword)
333 5848 : CALL keyword_release(keyword)
334 :
335 : CALL keyword_create(keyword, __LOCATION__, name="NN", &
336 : variants=["EXPON_NUMERATOR"], &
337 : description="Sets the value of the numerator of the exponential factor"// &
338 : " in the coordination FUNCTION.", &
339 : usage="NN {integer}", default_i_val=6, &
340 11696 : n_var=1)
341 5848 : CALL section_add_keyword(section, keyword)
342 5848 : CALL keyword_release(keyword)
343 :
344 : CALL keyword_create(keyword, __LOCATION__, name="ND", &
345 : variants=["EXPON_DENOMINATOR"], &
346 : description="Sets the value of the denominator of the exponential factor"// &
347 : " in the coordination FUNCTION.", &
348 : usage="ND {integer}", default_i_val=12, &
349 11696 : n_var=1)
350 5848 : CALL section_add_keyword(section, keyword)
351 5848 : CALL keyword_release(keyword)
352 :
353 : CALL keyword_create(keyword, __LOCATION__, name="R0_B", &
354 : variants=["R_0_B"], &
355 : description="For the CV given by the multiplication of two coorination numbers,"// &
356 : " specify the R0 parameter in the second coordination function.", &
357 : usage="R0_B {real}", default_r_val=3.0_dp, &
358 11696 : unit_str="bohr", n_var=1)
359 5848 : CALL section_add_keyword(section, keyword)
360 5848 : CALL keyword_release(keyword)
361 :
362 : CALL keyword_create(keyword, __LOCATION__, name="NN_B", &
363 : variants=["EXPON_NUMERATOR_B"], &
364 : description="For the CV given by the multiplication of two coorination numbers,"// &
365 : " Sets the value of the numerator of the exponential factor"// &
366 : " in the coordination FUNCTION.", &
367 : usage="NN_B {integer}", default_i_val=6, &
368 11696 : n_var=1)
369 5848 : CALL section_add_keyword(section, keyword)
370 5848 : CALL keyword_release(keyword)
371 :
372 : CALL keyword_create(keyword, __LOCATION__, name="ND_B", &
373 : variants=["EXPON_DENOMINATOR_B"], &
374 : description="For the CV given by the multiplication of two coorination numbers,"// &
375 : " Sets the value of the denominator of the exponential factor"// &
376 : " in the coordination FUNCTION.", &
377 : usage="ND_B {integer}", default_i_val=12, &
378 11696 : n_var=1)
379 5848 : CALL section_add_keyword(section, keyword)
380 5848 : CALL keyword_release(keyword)
381 :
382 5848 : END SUBROUTINE create_colvar_coord_section
383 :
384 : ! **************************************************************************************************
385 : !> \brief ...
386 : !> \param section ...
387 : ! **************************************************************************************************
388 5848 : SUBROUTINE create_colvar_cond_dist_section(section)
389 : TYPE(section_type), POINTER :: section
390 :
391 : TYPE(keyword_type), POINTER :: keyword
392 : TYPE(section_type), POINTER :: subsection
393 :
394 5848 : CPASSERT(.NOT. ASSOCIATED(section))
395 : CALL section_create(section, __LOCATION__, name="CONDITIONED_DISTANCE", &
396 : description="Section to define the conditioned distance as a collective variable.", &
397 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
398 :
399 5848 : NULLIFY (subsection, keyword)
400 :
401 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_DISTANCE", &
402 : description="Specify indexes of atoms/points from which the distance is computed. ", &
403 : usage="ATOMS_DISTANCE {integer} {integer} ..", repeats=.TRUE., &
404 5848 : n_var=-1, type_of_var=integer_t)
405 5848 : CALL section_add_keyword(section, keyword)
406 5848 : CALL keyword_release(keyword)
407 :
408 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_FROM", &
409 : variants=["POINTS_FROM"], &
410 : description="Specify indexes of atoms/points building the coordination variable. ", &
411 : usage="ATOMS_FROM {integer} {integer} ..", repeats=.TRUE., &
412 11696 : n_var=-1, type_of_var=integer_t)
413 5848 : CALL section_add_keyword(section, keyword)
414 5848 : CALL keyword_release(keyword)
415 :
416 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_TO", &
417 : variants=["POINTS_TO"], &
418 : description="Specify indexes of atoms/points building the coordination variable. ", &
419 : usage="ATOMS_TO {integer} {integer} ..", repeats=.TRUE., &
420 11696 : n_var=-1, type_of_var=integer_t)
421 5848 : CALL section_add_keyword(section, keyword)
422 5848 : CALL keyword_release(keyword)
423 :
424 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_FROM", &
425 : description="Specify alternatively kinds of atoms building the coordination variable.", &
426 : usage="KINDS_FROM {CHAR} {CHAR} ..", repeats=.TRUE., &
427 5848 : n_var=-1, type_of_var=char_t)
428 5848 : CALL section_add_keyword(section, keyword)
429 5848 : CALL keyword_release(keyword)
430 :
431 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_TO", &
432 : description="Specify alternatively kinds of atoms building the coordination variable.", &
433 : usage="KINDS_TO {CHAR} {CHAR} ..", repeats=.TRUE., &
434 5848 : n_var=-1, type_of_var=char_t)
435 5848 : CALL section_add_keyword(section, keyword)
436 5848 : CALL keyword_release(keyword)
437 :
438 : ! Must be present in each colvar and handled properly
439 5848 : CALL create_point_section(subsection)
440 5848 : CALL section_add_subsection(section, subsection)
441 5848 : CALL section_release(subsection)
442 :
443 : CALL keyword_create(keyword, __LOCATION__, name="R0", &
444 : variants=["R_0"], &
445 : description="Specify the R0 parameter in the coordination function.", &
446 : usage="R0 {real}", default_r_val=3.0_dp, &
447 11696 : unit_str="bohr", n_var=1)
448 5848 : CALL section_add_keyword(section, keyword)
449 5848 : CALL keyword_release(keyword)
450 :
451 : CALL keyword_create(keyword, __LOCATION__, name="NN", &
452 : variants=["EXPON_NUMERATOR"], &
453 : description="Sets the value of the numerator of the exponential factor"// &
454 : " in the coordination FUNCTION.", &
455 : usage="NN {integer}", default_i_val=6, &
456 11696 : n_var=1)
457 5848 : CALL section_add_keyword(section, keyword)
458 5848 : CALL keyword_release(keyword)
459 :
460 : CALL keyword_create(keyword, __LOCATION__, name="ND", &
461 : variants=["EXPON_DENOMINATOR"], &
462 : description="Sets the value of the denominator of the exponential factor"// &
463 : " in the coordination FUNCTION.", &
464 : usage="ND {integer}", default_i_val=12, &
465 11696 : n_var=1)
466 5848 : CALL section_add_keyword(section, keyword)
467 5848 : CALL keyword_release(keyword)
468 :
469 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
470 : description="Specify the lambda parameter at the exponent of the conditioned distance function.", &
471 : usage="LAMBDA {real}", default_r_val=3.0_dp, &
472 5848 : unit_str="bohr", n_var=1)
473 5848 : CALL section_add_keyword(section, keyword)
474 5848 : CALL keyword_release(keyword)
475 :
476 5848 : END SUBROUTINE create_colvar_cond_dist_section
477 :
478 : ! **************************************************************************************************
479 : !> \brief collective variables specifying population of a specie based on coordination
480 : !> \param section the section to be created
481 : !> \date 01.2009
482 : !> \author Fabio Sterpone
483 : ! **************************************************************************************************
484 5848 : SUBROUTINE create_colvar_pop_section(section)
485 : TYPE(section_type), POINTER :: section
486 :
487 : TYPE(keyword_type), POINTER :: keyword
488 : TYPE(section_type), POINTER :: subsection
489 :
490 5848 : CPASSERT(.NOT. ASSOCIATED(section))
491 : CALL section_create(section, __LOCATION__, name="population", &
492 : description="Section to define the population of specie as a collective variable. "// &
493 : "See also <https://doi.org/10.1021/jp3019588>.", &
494 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
495 :
496 5848 : NULLIFY (subsection, keyword)
497 :
498 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_FROM", &
499 : variants=["POINTS_FROM"], &
500 : description="Specify indexes of atoms/points building the coordination variable. ", &
501 : usage="ATOMS_FROM {integer} {integer} ..", repeats=.TRUE., &
502 11696 : n_var=-1, type_of_var=integer_t)
503 5848 : CALL section_add_keyword(section, keyword)
504 5848 : CALL keyword_release(keyword)
505 :
506 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_TO", &
507 : variants=["POINTS_TO"], &
508 : description="Specify indexes of atoms/points building the coordination variable. ", &
509 : usage="ATOMS_TO {integer} {integer} ..", repeats=.TRUE., &
510 11696 : n_var=-1, type_of_var=integer_t)
511 5848 : CALL section_add_keyword(section, keyword)
512 5848 : CALL keyword_release(keyword)
513 :
514 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_FROM", &
515 : description="Specify alternatively kinds of atoms building the coordination variable.", &
516 : usage="KINDS_FROM {CHAR} {CHAR} ..", repeats=.TRUE., &
517 5848 : n_var=-1, type_of_var=char_t)
518 5848 : CALL section_add_keyword(section, keyword)
519 5848 : CALL keyword_release(keyword)
520 :
521 : CALL keyword_create(keyword, __LOCATION__, name="KINDS_TO", &
522 : description="Specify alternatively kinds of atoms building the coordination variable.", &
523 : usage="KINDS_TO {CHAR} {CHAR} ..", repeats=.TRUE., &
524 5848 : n_var=-1, type_of_var=char_t)
525 5848 : CALL section_add_keyword(section, keyword)
526 5848 : CALL keyword_release(keyword)
527 :
528 : ! Must be present in each colvar and handled properly
529 5848 : CALL create_point_section(subsection)
530 5848 : CALL section_add_subsection(section, subsection)
531 5848 : CALL section_release(subsection)
532 :
533 : CALL keyword_create(keyword, __LOCATION__, name="R0", &
534 : variants=["R_0"], &
535 : description="Specify the R0 parameter in the coordination function.", &
536 : usage="R0 {real}", default_r_val=3.0_dp, &
537 11696 : n_var=1)
538 5848 : CALL section_add_keyword(section, keyword)
539 5848 : CALL keyword_release(keyword)
540 :
541 : CALL keyword_create(keyword, __LOCATION__, name="NN", &
542 : variants=["EXPON_NUMERATOR"], &
543 : description="Sets the value of the numerator of the exponential factor"// &
544 : " in the coordination FUNCTION.", &
545 : usage="NN {integer}", default_i_val=6, &
546 11696 : n_var=1)
547 5848 : CALL section_add_keyword(section, keyword)
548 5848 : CALL keyword_release(keyword)
549 :
550 : CALL keyword_create(keyword, __LOCATION__, name="ND", &
551 : variants=["EXPON_DENOMINATOR"], &
552 : description="Sets the value of the denominator of the exponential factor"// &
553 : " in the coordination FUNCTION.", &
554 : usage="ND {integer}", default_i_val=12, &
555 11696 : n_var=1)
556 5848 : CALL section_add_keyword(section, keyword)
557 5848 : CALL keyword_release(keyword)
558 :
559 : CALL keyword_create(keyword, __LOCATION__, name="n0", &
560 : variants=["n_0"], &
561 : description="Specify the n0 parameter that sets the coordination of the species.", &
562 : usage="n0 {integer}", default_i_val=4, &
563 11696 : n_var=1)
564 5848 : CALL section_add_keyword(section, keyword)
565 5848 : CALL keyword_release(keyword)
566 :
567 : CALL keyword_create(keyword, __LOCATION__, name="SIGMA", &
568 : description="Specify the gaussian width of used to build the population istogram.", &
569 : usage="SIGMA {real}", default_r_val=0.5_dp, &
570 5848 : n_var=1)
571 5848 : CALL section_add_keyword(section, keyword)
572 5848 : CALL keyword_release(keyword)
573 :
574 5848 : END SUBROUTINE create_colvar_pop_section
575 :
576 : ! **************************************************************************************************
577 : !> \brief ...
578 : !> \param section ...
579 : ! **************************************************************************************************
580 5848 : SUBROUTINE create_colvar_gyr_section(section)
581 : TYPE(section_type), POINTER :: section
582 :
583 : TYPE(keyword_type), POINTER :: keyword
584 : TYPE(section_type), POINTER :: subsection
585 :
586 5848 : CPASSERT(.NOT. ASSOCIATED(section))
587 : CALL section_create(section, __LOCATION__, name="GYRATION_RADIUS", &
588 : description="Section to define the gyration radius as a collective variable.", &
589 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
590 :
591 5848 : NULLIFY (subsection, keyword)
592 :
593 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
594 : variants=["POINTS"], &
595 : description="Specify indexes of atoms/points defyining the gyration radius variable. ", &
596 : usage="ATOMS {integer} {integer} ..", repeats=.TRUE., &
597 11696 : n_var=-1, type_of_var=integer_t)
598 5848 : CALL section_add_keyword(section, keyword)
599 5848 : CALL keyword_release(keyword)
600 :
601 : CALL keyword_create(keyword, __LOCATION__, name="KINDS", &
602 : description="Specify alternatively kinds of atoms defining the gyration radius.", &
603 : usage="KINDS {CHAR} {CHAR} ..", repeats=.TRUE., &
604 5848 : n_var=-1, type_of_var=char_t)
605 5848 : CALL section_add_keyword(section, keyword)
606 5848 : CALL keyword_release(keyword)
607 :
608 : ! Must be present in each colvar and handled properly
609 5848 : CALL create_point_section(subsection)
610 5848 : CALL section_add_subsection(section, subsection)
611 5848 : CALL section_release(subsection)
612 :
613 5848 : END SUBROUTINE create_colvar_gyr_section
614 :
615 : ! **************************************************************************************************
616 : !> \brief collective variables specifying torsion
617 : !> \param section the section to be created
618 : !> \author teo
619 : ! **************************************************************************************************
620 5848 : SUBROUTINE create_colvar_dfunct_section(section)
621 : TYPE(section_type), POINTER :: section
622 :
623 : TYPE(keyword_type), POINTER :: keyword
624 : TYPE(section_type), POINTER :: subsection
625 :
626 5848 : CPASSERT(.NOT. ASSOCIATED(section))
627 : CALL section_create(section, __LOCATION__, name="DISTANCE_FUNCTION", &
628 : description="Section to define functions between two distances as collective variables."// &
629 : " The function is defined as d1+coeff*d2", &
630 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
631 :
632 5848 : NULLIFY (keyword, subsection)
633 :
634 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
635 : variants=["POINTS"], &
636 : description="Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4).", &
637 : usage="ATOMS {integer} {integer} {integer} {integer}", &
638 11696 : n_var=4, type_of_var=integer_t)
639 5848 : CALL section_add_keyword(section, keyword)
640 5848 : CALL keyword_release(keyword)
641 :
642 : CALL keyword_create(keyword, __LOCATION__, name="COEFFICIENT", &
643 : description="Specifies the coefficient in the function for the constraint."// &
644 : " -1.0 has to be used for distance difference, 1.0 for distance addition", &
645 : usage="COEFFICIENT {real}", &
646 5848 : type_of_var=real_t)
647 5848 : CALL section_add_keyword(section, keyword)
648 5848 : CALL keyword_release(keyword)
649 :
650 : CALL keyword_create(keyword, __LOCATION__, name="PBC", &
651 : description="Whether periodic boundary conditions should be applied on the "// &
652 : "atomic position before computing the colvar or not.", &
653 : usage="PBC", &
654 5848 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
655 5848 : CALL section_add_keyword(section, keyword)
656 5848 : CALL keyword_release(keyword)
657 :
658 : ! Must be present in each colvar and handled properly
659 5848 : CALL create_point_section(subsection)
660 5848 : CALL section_add_subsection(section, subsection)
661 5848 : CALL section_release(subsection)
662 :
663 5848 : END SUBROUTINE create_colvar_dfunct_section
664 :
665 : ! **************************************************************************************************
666 : !> \brief collective variables specifying torsion
667 : !> \param section the section to be created
668 : !> \author teo
669 : ! **************************************************************************************************
670 5848 : SUBROUTINE create_colvar_torsion_section(section)
671 : TYPE(section_type), POINTER :: section
672 :
673 : TYPE(keyword_type), POINTER :: keyword
674 : TYPE(section_type), POINTER :: subsection
675 :
676 5848 : CPASSERT(.NOT. ASSOCIATED(section))
677 : CALL section_create(section, __LOCATION__, name="torsion", &
678 : description="Section to define the torsion as a collective variables.", &
679 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
680 :
681 5848 : NULLIFY (keyword, subsection)
682 :
683 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
684 : variants=["POINTS"], &
685 : description="Specifies the indexes of atoms/points defining the torsion.", &
686 : usage="ATOMS {integer} {integer} {integer} {integer}", &
687 11696 : n_var=4, type_of_var=integer_t)
688 5848 : CALL section_add_keyword(section, keyword)
689 5848 : CALL keyword_release(keyword)
690 :
691 : ! Must be present in each colvar and handled properly
692 5848 : CALL create_point_section(subsection)
693 5848 : CALL section_add_subsection(section, subsection)
694 5848 : CALL section_release(subsection)
695 :
696 5848 : END SUBROUTINE create_colvar_torsion_section
697 :
698 : ! **************************************************************************************************
699 : !> \brief collective variables specifying torsion
700 : !> \param section the section to be created
701 : !> \author teo
702 : ! **************************************************************************************************
703 5848 : SUBROUTINE create_colvar_rot_section(section)
704 : TYPE(section_type), POINTER :: section
705 :
706 : TYPE(keyword_type), POINTER :: keyword
707 : TYPE(section_type), POINTER :: subsection
708 :
709 5848 : CPASSERT(.NOT. ASSOCIATED(section))
710 : CALL section_create(section, __LOCATION__, name="bond_rotation", &
711 : description="Section to define the rotation of a bond/line with respect to"// &
712 : " another bond/line", &
713 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
714 :
715 5848 : NULLIFY (keyword, subsection)
716 :
717 : CALL keyword_create(keyword, __LOCATION__, name="P1_BOND1", &
718 : description="Specifies the index of atom/point defining the first point"// &
719 : " of the first bond/line.", &
720 : usage="P1_BOND1 {integer}", &
721 5848 : n_var=1, type_of_var=integer_t)
722 5848 : CALL section_add_keyword(section, keyword)
723 5848 : CALL keyword_release(keyword)
724 :
725 : CALL keyword_create(keyword, __LOCATION__, name="P2_BOND1", &
726 : description="Specifies the index of atom/point defining the second point"// &
727 : " of the first bond/line.", &
728 : usage="P2_BOND1 {integer}", &
729 5848 : n_var=1, type_of_var=integer_t)
730 5848 : CALL section_add_keyword(section, keyword)
731 5848 : CALL keyword_release(keyword)
732 :
733 : CALL keyword_create(keyword, __LOCATION__, name="P1_BOND2", &
734 : description="Specifies the index of atom/point defining the first point"// &
735 : " of the second bond/line.", &
736 : usage="P1_BOND2 {integer}", &
737 5848 : n_var=1, type_of_var=integer_t)
738 5848 : CALL section_add_keyword(section, keyword)
739 5848 : CALL keyword_release(keyword)
740 :
741 : CALL keyword_create(keyword, __LOCATION__, name="P2_BOND2", &
742 : description="Specifies the index of atom/point defining the second point"// &
743 : " of the second bond/line.", &
744 : usage="P2_BOND2 {integer}", &
745 5848 : n_var=1, type_of_var=integer_t)
746 5848 : CALL section_add_keyword(section, keyword)
747 5848 : CALL keyword_release(keyword)
748 :
749 : ! Must be present in each colvar and handled properly
750 5848 : CALL create_point_section(subsection)
751 5848 : CALL section_add_subsection(section, subsection)
752 5848 : CALL section_release(subsection)
753 :
754 5848 : END SUBROUTINE create_colvar_rot_section
755 :
756 : ! **************************************************************************************************
757 : !> \brief collective variables specifying angles
758 : !> \param section the section to be created
759 : !> \author teo
760 : ! **************************************************************************************************
761 5848 : SUBROUTINE create_colvar_angle_section(section)
762 : TYPE(section_type), POINTER :: section
763 :
764 : TYPE(keyword_type), POINTER :: keyword
765 : TYPE(section_type), POINTER :: subsection
766 :
767 5848 : CPASSERT(.NOT. ASSOCIATED(section))
768 : CALL section_create(section, __LOCATION__, name="angle", &
769 : description="Section to define the angle as a collective variables.", &
770 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
771 5848 : NULLIFY (keyword, subsection)
772 :
773 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
774 : variants=["POINTS"], &
775 : description="Specifies the indexes of atoms/points defining the angle.", &
776 : usage="ATOMS {integer} {integer} {integer}", &
777 11696 : n_var=3, type_of_var=integer_t)
778 5848 : CALL section_add_keyword(section, keyword)
779 5848 : CALL keyword_release(keyword)
780 :
781 : ! Must be present in each colvar and handled properly
782 5848 : CALL create_point_section(subsection)
783 5848 : CALL section_add_subsection(section, subsection)
784 5848 : CALL section_release(subsection)
785 :
786 5848 : END SUBROUTINE create_colvar_angle_section
787 :
788 : ! **************************************************************************************************
789 : !> \brief creates the colvar section regarded to the collective variables dist
790 : !> \param section the section to be created
791 : !> \author teo
792 : ! **************************************************************************************************
793 5848 : SUBROUTINE create_colvar_dist_section(section)
794 : TYPE(section_type), POINTER :: section
795 :
796 : TYPE(keyword_type), POINTER :: keyword
797 : TYPE(section_type), POINTER :: subsection
798 :
799 5848 : CPASSERT(.NOT. ASSOCIATED(section))
800 : CALL section_create(section, __LOCATION__, name="distance", &
801 : description="Section to define the distance as a collective variables.", &
802 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
803 5848 : NULLIFY (keyword, subsection)
804 :
805 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
806 : variants=["POINTS"], &
807 : description="Specifies the indexes of atoms/points defining the distance.", &
808 : usage="ATOMS {integer} {integer}", &
809 11696 : n_var=2, type_of_var=integer_t)
810 5848 : CALL section_add_keyword(section, keyword)
811 5848 : CALL keyword_release(keyword)
812 : CALL keyword_create(keyword, __LOCATION__, name="AXIS", &
813 : description="Define the axes along which the colvar should be evaluated", &
814 : usage="AXIS (XYZ | X | Y | Z | XY| XZ | YZ)", &
815 : enum_c_vals=s2a("XYZ", "X", "Y", "Z", "XY", "XZ", "YZ"), &
816 : enum_i_vals=[do_clv_xyz, do_clv_x, do_clv_y, do_clv_z, do_clv_xy, do_clv_xz, do_clv_yz], &
817 5848 : default_i_val=do_clv_xyz)
818 5848 : CALL section_add_keyword(section, keyword)
819 5848 : CALL keyword_release(keyword)
820 :
821 : CALL keyword_create(keyword, __LOCATION__, name="SIGN", &
822 : description="Whether the distance along one Cartesian axis has to be considered with sign."// &
823 : " This option is valid if only one dimension is selected.", &
824 : usage="SIGN", &
825 5848 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
826 5848 : CALL section_add_keyword(section, keyword)
827 5848 : CALL keyword_release(keyword)
828 :
829 : ! Must be present in each colvar and handled properly
830 5848 : CALL create_point_section(subsection)
831 5848 : CALL section_add_subsection(section, subsection)
832 5848 : CALL section_release(subsection)
833 :
834 5848 : END SUBROUTINE create_colvar_dist_section
835 :
836 : ! **************************************************************************************************
837 : !> \brief creates the colvar section regarded to the collective variables dist
838 : !> \param section the section to be created
839 : !> \author teo
840 : ! **************************************************************************************************
841 5851 : SUBROUTINE create_colvar_xyz_d_section(section)
842 : TYPE(section_type), POINTER :: section
843 :
844 : TYPE(keyword_type), POINTER :: keyword
845 : TYPE(section_type), POINTER :: subsection
846 :
847 5851 : CPASSERT(.NOT. ASSOCIATED(section))
848 : CALL section_create(section, __LOCATION__, name="XYZ_DIAG", &
849 : description="Section to define the distance of an atom from its starting "// &
850 : "position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable. "// &
851 : "If absolute_position is specified, instead the CV is represented by the "// &
852 : "instantaneous position of the atom (only available for X, Y or Z components).", &
853 5851 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
854 5851 : NULLIFY (keyword, subsection)
855 :
856 : CALL keyword_create(keyword, __LOCATION__, name="ATOM", &
857 : variants=["POINT"], &
858 : description="Specifies the index of the atom/point.", &
859 : usage="ATOM {integer}", &
860 11702 : n_var=1, type_of_var=integer_t)
861 5851 : CALL section_add_keyword(section, keyword)
862 5851 : CALL keyword_release(keyword)
863 :
864 : CALL keyword_create(keyword, __LOCATION__, name="COMPONENT", &
865 : description="Define the component of the position vector which will be used "// &
866 : "as a colvar.", &
867 : usage="COMPONENT (XYZ | X | Y | Z | XY| XZ | YZ)", &
868 : enum_c_vals=s2a("XYZ", "X", "Y", "Z", "XY", "XZ", "YZ"), &
869 : enum_i_vals=[do_clv_xyz, do_clv_x, do_clv_y, do_clv_z, do_clv_xy, do_clv_xz, do_clv_yz], &
870 5851 : default_i_val=do_clv_xyz)
871 5851 : CALL section_add_keyword(section, keyword)
872 5851 : CALL keyword_release(keyword)
873 :
874 : CALL keyword_create(keyword, __LOCATION__, name="PBC", &
875 : description="Whether periodic boundary conditions should be applied on the "// &
876 : "atomic position before computing the colvar or not.", &
877 : usage="PBC", &
878 5851 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
879 5851 : CALL section_add_keyword(section, keyword)
880 5851 : CALL keyword_release(keyword)
881 :
882 : CALL keyword_create(keyword, __LOCATION__, name="ABSOLUTE_POSITION", &
883 : description="If enabled, the absolute position of the atoms will be used. ", &
884 : usage="ABSOLUTE_POSITION", &
885 5851 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
886 5851 : CALL section_add_keyword(section, keyword)
887 5851 : CALL keyword_release(keyword)
888 :
889 : ! Must be present in each colvar and handled properly
890 5851 : CALL create_point_section(subsection)
891 5851 : CALL section_add_subsection(section, subsection)
892 5851 : CALL section_release(subsection)
893 :
894 5851 : END SUBROUTINE create_colvar_xyz_d_section
895 :
896 : ! **************************************************************************************************
897 : !> \brief creates the colvar section regarded to the collective variables dist
898 : !> \param section the section to be created
899 : !> \author teo
900 : ! **************************************************************************************************
901 5851 : SUBROUTINE create_colvar_xyz_od_section(section)
902 : TYPE(section_type), POINTER :: section
903 :
904 : TYPE(keyword_type), POINTER :: keyword
905 : TYPE(section_type), POINTER :: subsection
906 :
907 5851 : CPASSERT(.NOT. ASSOCIATED(section))
908 : CALL section_create(section, __LOCATION__, name="XYZ_OUTERDIAG", &
909 : description="Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0))"// &
910 : " or part of its components as a collective variable. The final term is given by the product"// &
911 : " of the components of A with the components of B.", &
912 5851 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
913 5851 : NULLIFY (keyword, subsection)
914 :
915 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
916 : variants=["POINTS"], &
917 : description="Specifies the index of the atoms/points A and B.", &
918 : usage="ATOMS {integer} {integer}", &
919 11702 : n_var=2, type_of_var=integer_t)
920 5851 : CALL section_add_keyword(section, keyword)
921 5851 : CALL keyword_release(keyword)
922 :
923 : CALL keyword_create(keyword, __LOCATION__, name="COMPONENT_A", &
924 : description="Define the component of the position vector which will be used "// &
925 : "as a colvar for atom A.", &
926 : usage="COMPONENT_A (XYZ | X | Y | Z | XY| XZ | YZ)", &
927 : enum_c_vals=s2a("XYZ", "X", "Y", "Z", "XY", "XZ", "YZ"), &
928 : enum_i_vals=[do_clv_xyz, do_clv_x, do_clv_y, do_clv_z, do_clv_xy, do_clv_xz, do_clv_yz], &
929 5851 : default_i_val=do_clv_xyz)
930 5851 : CALL section_add_keyword(section, keyword)
931 5851 : CALL keyword_release(keyword)
932 :
933 : CALL keyword_create(keyword, __LOCATION__, name="COMPONENT_B", &
934 : description="Define the component of the position vector which will be used "// &
935 : "as a colvar for atom B.", &
936 : usage="COMPONENT_B (XYZ | X | Y | Z | XY| XZ | YZ)", &
937 : enum_c_vals=s2a("XYZ", "X", "Y", "Z", "XY", "XZ", "YZ"), &
938 : enum_i_vals=[do_clv_xyz, do_clv_x, do_clv_y, do_clv_z, do_clv_xy, do_clv_xz, do_clv_yz], &
939 5851 : default_i_val=do_clv_xyz)
940 5851 : CALL section_add_keyword(section, keyword)
941 5851 : CALL keyword_release(keyword)
942 :
943 : CALL keyword_create(keyword, __LOCATION__, name="PBC", &
944 : description="Whether periodic boundary conditions should be applied on the "// &
945 : "atomic position before computing the colvar or not.", &
946 : usage="PBC", &
947 5851 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
948 5851 : CALL section_add_keyword(section, keyword)
949 5851 : CALL keyword_release(keyword)
950 :
951 : ! Must be present in each colvar and handled properly
952 5851 : CALL create_point_section(subsection)
953 5851 : CALL section_add_subsection(section, subsection)
954 5851 : CALL section_release(subsection)
955 :
956 5851 : END SUBROUTINE create_colvar_xyz_od_section
957 :
958 : ! **************************************************************************************************
959 : !> \brief energy as collective variable
960 : !> \param section the section to be created
961 : !> \author Sebastiano Caravati
962 : ! **************************************************************************************************
963 5848 : SUBROUTINE create_colvar_u_section(section)
964 : TYPE(section_type), POINTER :: section
965 :
966 : TYPE(section_type), POINTER :: subsection
967 :
968 5848 : CPASSERT(.NOT. ASSOCIATED(section))
969 : CALL section_create(section, __LOCATION__, name="u", &
970 : description="Section to define the energy as a generalized collective variable.", &
971 5848 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
972 :
973 5848 : NULLIFY (subsection)
974 : CALL create_function_section(subsection, "MIXED", "ENERGY_FUNCTION", &
975 : description="This section allows to use any function of the energy subsystems "// &
976 : "in a mixed_env calculation as a collective variable. Same as the section "// &
977 : "FORCE_EVAL/MIXED/GENERIC, to allow an efficient mapping the order of the "// &
978 : "energy variables will be considered identical to the order of the force_eval "// &
979 5848 : "in the MULTIPLE_FORCE_EVALS/FORCE_EVAL_ORDER list.", do_deriv=.TRUE.)
980 5848 : CALL section_add_subsection(section, subsection)
981 5848 : CALL section_release(subsection)
982 :
983 5848 : END SUBROUTINE create_colvar_u_section
984 :
985 : ! **************************************************************************************************
986 : !> \brief creates the colvar section regarded to the collective variables distance
987 : !> of a point from a plane
988 : !> \param section the section to be created
989 : !> \author teo
990 : ! **************************************************************************************************
991 5848 : SUBROUTINE create_colvar_d_pl_section(section)
992 : TYPE(section_type), POINTER :: section
993 :
994 : TYPE(keyword_type), POINTER :: keyword
995 : TYPE(section_type), POINTER :: subsection
996 :
997 5848 : CPASSERT(.NOT. ASSOCIATED(section))
998 : CALL section_create(section, __LOCATION__, name="distance_point_plane", &
999 : description="Section to define the distance of a point from a plane "// &
1000 : "as a collective variables.", &
1001 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1002 5848 : NULLIFY (keyword, subsection)
1003 :
1004 : CALL keyword_create(keyword, __LOCATION__, name="PBC", &
1005 : description="Whether periodic boundary conditions should be applied on the "// &
1006 : "atomic position before computing the colvar or not.", &
1007 : usage="PBC", &
1008 5848 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
1009 5848 : CALL section_add_keyword(section, keyword)
1010 5848 : CALL keyword_release(keyword)
1011 :
1012 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_PLANE", &
1013 : variants=["POINTS_PLANE"], &
1014 : description="Specifies the indexes of atoms/points defining the plane.", &
1015 : usage="ATOMS_PLANE <INTEGER> <INTEGER> <INTEGER>", &
1016 11696 : n_var=3, type_of_var=integer_t)
1017 5848 : CALL section_add_keyword(section, keyword)
1018 5848 : CALL keyword_release(keyword)
1019 :
1020 : CALL keyword_create(keyword, __LOCATION__, name="ATOM_POINT", &
1021 : variants=["POINT_POINT"], &
1022 : description="Specifies the atom/point index defining the point.", &
1023 : usage="ATOM_POINT <INTEGER>", &
1024 11696 : n_var=1, type_of_var=integer_t)
1025 5848 : CALL section_add_keyword(section, keyword)
1026 5848 : CALL keyword_release(keyword)
1027 :
1028 : ! Must be present in each colvar and handled properly
1029 5848 : CALL create_point_section(subsection)
1030 5848 : CALL section_add_subsection(section, subsection)
1031 5848 : CALL section_release(subsection)
1032 :
1033 5848 : END SUBROUTINE create_colvar_d_pl_section
1034 :
1035 : ! **************************************************************************************************
1036 : !> \brief creates the colvar section regarded to the collective variables
1037 : !> angles betweem two planes
1038 : !> \param section the section to be created
1039 : !> \author teo
1040 : ! **************************************************************************************************
1041 5848 : SUBROUTINE create_colvar_a_pl_section(section)
1042 : TYPE(section_type), POINTER :: section
1043 :
1044 : TYPE(keyword_type), POINTER :: keyword
1045 : TYPE(section_type), POINTER :: subsection
1046 :
1047 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1048 : CALL section_create(section, __LOCATION__, name="angle_plane_plane", &
1049 : description="This section defines the angle between two planes "// &
1050 : "as a collective variables.", &
1051 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1052 5848 : NULLIFY (keyword, subsection)
1053 :
1054 : CALL section_create(subsection, __LOCATION__, name="PLANE", &
1055 : description="This section defines the plane. When using this colvar, "// &
1056 : "two plane section must be defined!", &
1057 5848 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1058 :
1059 : CALL keyword_create(keyword, __LOCATION__, name="DEF_TYPE", &
1060 : description="Specify how the plane is defined: either by 3 atoms or by a fixed normal "// &
1061 : "vector. At least one plane must be defined through atoms.", &
1062 : usage="DEF_TYPE ATOMS", &
1063 : default_i_val=plane_def_atoms, &
1064 : enum_c_vals=s2a("ATOMS", "VECTOR"), &
1065 : enum_desc=s2a("Plane defined by the position of 3 atoms", &
1066 : "Plane defined by a fixed normal vector"), &
1067 5848 : enum_i_vals=[plane_def_atoms, plane_def_vec])
1068 5848 : CALL section_add_keyword(subsection, keyword)
1069 5848 : CALL keyword_release(keyword)
1070 :
1071 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1072 : description="Specifies the indexes of 3 atoms/points defining the plane.", &
1073 : usage="ATOMS <INTEGER> <INTEGER> <INTEGER>", &
1074 5848 : n_var=3, type_of_var=integer_t)
1075 5848 : CALL section_add_keyword(subsection, keyword)
1076 5848 : CALL keyword_release(keyword)
1077 :
1078 : CALL keyword_create(keyword, __LOCATION__, name="NORMAL_VECTOR", &
1079 : description="Alternatively to 3 atoms/points one can define one of the two, "// &
1080 : "planes by defining its NORMAL vector.", &
1081 : usage="NORMAL_VECTOR 0.0 1.0 0.0", &
1082 5848 : n_var=3, type_of_var=real_t)
1083 5848 : CALL section_add_keyword(subsection, keyword)
1084 5848 : CALL keyword_release(keyword)
1085 5848 : CALL section_add_subsection(section, subsection)
1086 5848 : CALL section_release(subsection)
1087 :
1088 : ! Must be present in each colvar and handled properly
1089 5848 : CALL create_point_section(subsection)
1090 5848 : CALL section_add_subsection(section, subsection)
1091 5848 : CALL section_release(subsection)
1092 5848 : END SUBROUTINE create_colvar_a_pl_section
1093 :
1094 : ! **************************************************************************************************
1095 : !> \brief create a geometrical point as a function of several atom coordinates
1096 : !> \param section the section to be created
1097 : !> \author teo
1098 : ! **************************************************************************************************
1099 99422 : SUBROUTINE create_point_section(section)
1100 : TYPE(section_type), POINTER :: section
1101 :
1102 : TYPE(keyword_type), POINTER :: keyword
1103 :
1104 99422 : CPASSERT(.NOT. ASSOCIATED(section))
1105 : CALL section_create(section, __LOCATION__, name="POINT", &
1106 : description="Enables the possibility to use geometrical centers instead of single atoms"// &
1107 : " to define colvars", &
1108 99422 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1109 :
1110 99422 : NULLIFY (keyword)
1111 :
1112 : CALL keyword_create(keyword, __LOCATION__, name="TYPE", &
1113 : description="Chooses the type of geometrical point", &
1114 : usage="type (GEO_CENTER|FIX_POINT)", &
1115 : enum_c_vals=s2a("GEO_CENTER", "FIX_POINT"), &
1116 : enum_desc=s2a("Computes the geometrical center of the listed atoms", &
1117 : "Defines a fixed point in space"), &
1118 : enum_i_vals=[do_clv_geo_center, do_clv_fix_point], &
1119 99422 : default_i_val=do_clv_geo_center)
1120 99422 : CALL section_add_keyword(section, keyword)
1121 99422 : CALL keyword_release(keyword)
1122 :
1123 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1124 : description="Specifies the indexes of atoms defining the geometrical center", &
1125 : usage="ATOMS {integer} {integer} {integer} {integer}", &
1126 99422 : n_var=-1, type_of_var=integer_t, repeats=.TRUE.)
1127 99422 : CALL section_add_keyword(section, keyword)
1128 99422 : CALL keyword_release(keyword)
1129 :
1130 : CALL keyword_create( &
1131 : keyword, __LOCATION__, name="WEIGHTS", &
1132 : description="Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom", &
1133 : usage="WEIGHTS {real} {real} {real} {real}", &
1134 99422 : n_var=-1, type_of_var=real_t, repeats=.TRUE.)
1135 99422 : CALL section_add_keyword(section, keyword)
1136 99422 : CALL keyword_release(keyword)
1137 :
1138 : CALL keyword_create(keyword, __LOCATION__, name="XYZ", &
1139 : description="Specifies the xyz of the fixed point (if the case)", &
1140 : usage="XYZ {real} {real} {real}", &
1141 : n_var=3, type_of_var=real_t, unit_str="bohr", &
1142 99422 : repeats=.FALSE.)
1143 99422 : CALL section_add_keyword(section, keyword)
1144 99422 : CALL keyword_release(keyword)
1145 :
1146 99422 : END SUBROUTINE create_point_section
1147 :
1148 : ! **************************************************************************************************
1149 : !> \brief collective variables specifying torsion
1150 : !> \param section the section to be created
1151 : !> \author teo
1152 : ! **************************************************************************************************
1153 5848 : SUBROUTINE create_colvar_qparm_section(section)
1154 : TYPE(section_type), POINTER :: section
1155 :
1156 : TYPE(keyword_type), POINTER :: keyword
1157 : TYPE(section_type), POINTER :: subsection
1158 :
1159 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1160 : CALL section_create(section, __LOCATION__, name="qparm", &
1161 : description="Section to define the Q parameter (crystalline order parameter) as a collective variable.", &
1162 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1163 :
1164 5848 : NULLIFY (keyword, subsection)
1165 :
1166 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_FROM", &
1167 : variants=["POINTS_FROM"], &
1168 : description="Specify indexes of atoms/points building the coordination variable. ", &
1169 : usage="ATOMS_FROM {integer} {integer} ..", repeats=.TRUE., &
1170 11696 : n_var=-1, type_of_var=integer_t)
1171 5848 : CALL section_add_keyword(section, keyword)
1172 5848 : CALL keyword_release(keyword)
1173 :
1174 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_TO", &
1175 : variants=["POINTS_TO"], &
1176 : description="Specify indexes of atoms/points building the coordination variable. ", &
1177 : usage="ATOMS_TO {integer} {integer} ..", repeats=.TRUE., &
1178 11696 : n_var=-1, type_of_var=integer_t)
1179 5848 : CALL section_add_keyword(section, keyword)
1180 5848 : CALL keyword_release(keyword)
1181 :
1182 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1183 : description="Specifies the distance cutoff for neighbors. "// &
1184 : "Cutoff function is exactly zero for all neighbors beyond RCUT.", &
1185 : usage="RCUT {real}", &
1186 5848 : n_var=1, unit_str="angstrom", type_of_var=real_t)
1187 5848 : CALL section_add_keyword(section, keyword)
1188 5848 : CALL keyword_release(keyword)
1189 :
1190 : CALL keyword_create(keyword, __LOCATION__, name="INCLUDE_IMAGES", &
1191 : description="Whether to include periodic images of ATOMS_TO into the neighbor list.", &
1192 : usage="INCLUDE_IMAGES", &
1193 5848 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1194 5848 : CALL section_add_keyword(section, keyword)
1195 5848 : CALL keyword_release(keyword)
1196 :
1197 : CALL keyword_create(keyword, __LOCATION__, name="RSTART", &
1198 : description="Specifies the distance cutoff for neighbors. "// &
1199 : "Cutoff function is exactly 1 for all neighbors closer than RSTART.", &
1200 : usage="RSTART {real}", &
1201 5848 : n_var=1, unit_str="angstrom", type_of_var=real_t)
1202 5848 : CALL section_add_keyword(section, keyword)
1203 5848 : CALL keyword_release(keyword)
1204 :
1205 : CALL keyword_create(keyword, __LOCATION__, name="L", &
1206 : description="Specifies the L spherical harmonics from Ylm.", &
1207 : usage="L {integer}", &
1208 5848 : n_var=1, type_of_var=integer_t)
1209 5848 : CALL section_add_keyword(section, keyword)
1210 5848 : CALL keyword_release(keyword)
1211 :
1212 : !CALL keyword_create(keyword, __LOCATION__, name="ALPHA", &
1213 : ! description="Specifies the width of the Fermi-Dirac style smearing around RCUT.", &
1214 : ! usage="ALPHA {real}", unit_str="angstrom^-1", default_r_val=0.0_dp)
1215 : !CALL section_add_keyword(section, keyword)
1216 : !CALL keyword_release(keyword)
1217 :
1218 : ! Must be present in each colvar and handled properly
1219 5848 : CALL create_point_section(subsection)
1220 5848 : CALL section_add_subsection(section, subsection)
1221 5848 : CALL section_release(subsection)
1222 :
1223 5848 : END SUBROUTINE create_colvar_qparm_section
1224 :
1225 : ! **************************************************************************************************
1226 : !> \brief collective variables specifying hydronium solvation
1227 : !> \param section the section to be created
1228 : !> \author Marcel Baer
1229 : ! **************************************************************************************************
1230 5848 : SUBROUTINE create_colvar_hydronium_shell_section(section)
1231 : TYPE(section_type), POINTER :: section
1232 :
1233 : TYPE(keyword_type), POINTER :: keyword
1234 :
1235 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1236 : CALL section_create(section, __LOCATION__, name="HYDRONIUM_SHELL", &
1237 : description="Section to define the formation of a hydronium as a"// &
1238 : " collective variable. Number of oxygens in the 1st shell of the"// &
1239 : " hydronium. Adapted from Equation (3) in Supplementary Info of"// &
1240 : " J. Am. Chem. Soc.,128, 2006, 11318, i.e. omitting the cutoff function"// &
1241 : " and summing only over the oxygens of water.", &
1242 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1243 :
1244 5848 : NULLIFY (keyword)
1245 :
1246 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS", &
1247 : description="Specifies indexes of atoms building the coordination variable."// &
1248 : " Oxygens of the water molecules.", &
1249 : usage="OXYGENS {integer} {integer} ..", repeats=.TRUE., &
1250 5848 : n_var=-1, type_of_var=integer_t)
1251 5848 : CALL section_add_keyword(section, keyword)
1252 5848 : CALL keyword_release(keyword)
1253 :
1254 : CALL keyword_create(keyword, __LOCATION__, name="HYDROGENS", &
1255 : description="Specifies indexes of atoms building the coordination variable."// &
1256 : " Hydrogens of the water molecules.", &
1257 : usage="HYDROGENS {integer} {integer} ..", repeats=.TRUE., &
1258 5848 : n_var=-1, type_of_var=integer_t)
1259 5848 : CALL section_add_keyword(section, keyword)
1260 5848 : CALL keyword_release(keyword)
1261 :
1262 : CALL keyword_create(keyword, __LOCATION__, name="ROO", &
1263 : description="Specifies the rc parameter in the coordination function:"// &
1264 : " number of oxygens per water oxygen.", &
1265 : usage="ROO {real}", default_r_val=cp_unit_to_cp2k(value=3.0_dp, &
1266 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1267 5848 : CALL section_add_keyword(section, keyword)
1268 5848 : CALL keyword_release(keyword)
1269 :
1270 : CALL keyword_create(keyword, __LOCATION__, name="pOO", &
1271 : variants=["EXPON_NUMERATORA"], &
1272 : description="Sets the value of the numerator of the exponential factor"// &
1273 : " in the coordination function: number of oxygens per water oxygen.", &
1274 : usage="pOO {integer}", default_i_val=6, &
1275 11696 : n_var=1)
1276 5848 : CALL section_add_keyword(section, keyword)
1277 5848 : CALL keyword_release(keyword)
1278 :
1279 : CALL keyword_create(keyword, __LOCATION__, name="qOO", &
1280 : variants=["EXPON_DENOMINATORA"], &
1281 : description="Sets the value of the denominator of the exponential factor"// &
1282 : " in the coordination function: number of oxygens per water oxygen.", &
1283 : usage="qOO {integer}", default_i_val=12, &
1284 11696 : n_var=1)
1285 5848 : CALL section_add_keyword(section, keyword)
1286 5848 : CALL keyword_release(keyword)
1287 :
1288 : CALL keyword_create(keyword, __LOCATION__, name="ROH", &
1289 : description="Specifies the rc parameter in the coordination function:"// &
1290 : " number of hydrogens per water molecule.", &
1291 : usage="ROH {real}", default_r_val=cp_unit_to_cp2k(value=3.0_dp, &
1292 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1293 5848 : CALL section_add_keyword(section, keyword)
1294 5848 : CALL keyword_release(keyword)
1295 :
1296 : CALL keyword_create(keyword, __LOCATION__, name="pOH", &
1297 : variants=["EXPON_NUMERATORB"], &
1298 : description="Sets the value of the numerator of the exponential factor"// &
1299 : " in the coordination function: number of hydrogens per water molecule.", &
1300 : usage="pOH {integer}", default_i_val=6, &
1301 11696 : n_var=1)
1302 5848 : CALL section_add_keyword(section, keyword)
1303 5848 : CALL keyword_release(keyword)
1304 :
1305 : CALL keyword_create(keyword, __LOCATION__, name="qOH", &
1306 : variants=["EXPON_DENOMINATORB"], &
1307 : description="Sets the value of the denominator of the exponential factor"// &
1308 : " in the coordination function: number of hydrogens per water molecule.", &
1309 : usage="qOH {integer}", default_i_val=12, &
1310 11696 : n_var=1)
1311 5848 : CALL section_add_keyword(section, keyword)
1312 5848 : CALL keyword_release(keyword)
1313 :
1314 : CALL keyword_create(keyword, __LOCATION__, name="NH", &
1315 : description="Specifies the NH parameter in the M function.", &
1316 : usage="NH {real}", default_r_val=3.0_dp, &
1317 5848 : n_var=1)
1318 5848 : CALL section_add_keyword(section, keyword)
1319 5848 : CALL keyword_release(keyword)
1320 :
1321 : CALL keyword_create(keyword, __LOCATION__, name="pM", &
1322 : variants=["EXPON_NUMERATOR"], &
1323 : description="Sets the value of the numerator of the exponential factor"// &
1324 : " in the M function.", &
1325 : usage="pM {integer}", default_i_val=8, &
1326 11696 : n_var=1)
1327 5848 : CALL section_add_keyword(section, keyword)
1328 5848 : CALL keyword_release(keyword)
1329 :
1330 : CALL keyword_create(keyword, __LOCATION__, name="qM", &
1331 : variants=["EXPON_DENOMINATOR"], &
1332 : description="Sets the value of the denominator of the exponential factor"// &
1333 : " in the M function.", &
1334 : usage="qM {integer}", default_i_val=16, &
1335 11696 : n_var=1)
1336 5848 : CALL section_add_keyword(section, keyword)
1337 5848 : CALL keyword_release(keyword)
1338 :
1339 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
1340 : description="Specify the LAMBDA parameter in the hydronium function.", &
1341 : usage="LAMBDA {real}", default_r_val=10.0_dp, &
1342 5848 : n_var=1)
1343 5848 : CALL section_add_keyword(section, keyword)
1344 5848 : CALL keyword_release(keyword)
1345 :
1346 5848 : END SUBROUTINE create_colvar_hydronium_shell_section
1347 :
1348 : ! **************************************************************************************************
1349 : !> \brief collective variables specifying the distance between hydronium and hydroxide ion
1350 : !> \param section the section to be created
1351 : !> \author Dorothea Golze
1352 : ! **************************************************************************************************
1353 5848 : SUBROUTINE create_colvar_hydronium_dist_section(section)
1354 : TYPE(section_type), POINTER :: section
1355 :
1356 : TYPE(keyword_type), POINTER :: keyword
1357 :
1358 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1359 : CALL section_create(section, __LOCATION__, name="HYDRONIUM_DISTANCE", &
1360 : description="Section to define the formation of a hydronium as a"// &
1361 : " collective variable. Distance between hydronium and hydroxide ion"// &
1362 : " Experimental at this point, i.e. not proved to be an effective"// &
1363 : " collective variable.", &
1364 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1365 :
1366 5848 : NULLIFY (keyword)
1367 :
1368 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS", &
1369 : description="Specifies indexes of atoms building the coordination variable."// &
1370 : " Oxygens of the water molecules.", &
1371 : usage="OXYGENS {integer} {integer} ..", repeats=.TRUE., &
1372 5848 : n_var=-1, type_of_var=integer_t)
1373 5848 : CALL section_add_keyword(section, keyword)
1374 5848 : CALL keyword_release(keyword)
1375 :
1376 : CALL keyword_create(keyword, __LOCATION__, name="HYDROGENS", &
1377 : description="Specifies indexes of atoms building the coordination variable."// &
1378 : " Hydrogens of the water molecules.", &
1379 : usage="HYDROGENS {integer} {integer} ..", repeats=.TRUE., &
1380 5848 : n_var=-1, type_of_var=integer_t)
1381 5848 : CALL section_add_keyword(section, keyword)
1382 5848 : CALL keyword_release(keyword)
1383 :
1384 : CALL keyword_create(keyword, __LOCATION__, name="ROH", &
1385 : description="Specifies the rc parameter in the coordination function:"// &
1386 : " number of hydrogens per water molecule.", &
1387 : usage="ROH {real}", default_r_val=cp_unit_to_cp2k(value=2.4_dp, &
1388 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1389 5848 : CALL section_add_keyword(section, keyword)
1390 5848 : CALL keyword_release(keyword)
1391 :
1392 : CALL keyword_create(keyword, __LOCATION__, name="pOH", &
1393 : description="Sets the value of the numerator of the exponential factor"// &
1394 : " in the coordination function: number of hydrogens per water molecule.", &
1395 : usage="pOH {integer}", default_i_val=6, &
1396 5848 : n_var=1)
1397 5848 : CALL section_add_keyword(section, keyword)
1398 5848 : CALL keyword_release(keyword)
1399 :
1400 : CALL keyword_create(keyword, __LOCATION__, name="qOH", &
1401 : description="Sets the value of the denominator of the exponential factor"// &
1402 : " in the coordination function: number of hydrogens per water molecule.", &
1403 : usage="qOH {integer}", default_i_val=12, &
1404 5848 : n_var=1)
1405 5848 : CALL section_add_keyword(section, keyword)
1406 5848 : CALL keyword_release(keyword)
1407 :
1408 : CALL keyword_create(keyword, __LOCATION__, name="NH", &
1409 : description="Specifies the NH parameter in the M function.", &
1410 : usage="NH {real}", default_r_val=2.2_dp, &
1411 5848 : n_var=1)
1412 5848 : CALL section_add_keyword(section, keyword)
1413 5848 : CALL keyword_release(keyword)
1414 :
1415 : CALL keyword_create(keyword, __LOCATION__, name="pM", &
1416 : description="Sets the value of the numerator of the exponential factor"// &
1417 : " in the M function.", &
1418 : usage="pM {integer}", default_i_val=8, &
1419 5848 : n_var=1)
1420 5848 : CALL section_add_keyword(section, keyword)
1421 5848 : CALL keyword_release(keyword)
1422 :
1423 : CALL keyword_create(keyword, __LOCATION__, name="qM", &
1424 : description="Sets the value of the denominator of the exponential factor"// &
1425 : " in the M function.", &
1426 : usage="qM {integer}", default_i_val=16, &
1427 5848 : n_var=1)
1428 5848 : CALL section_add_keyword(section, keyword)
1429 5848 : CALL keyword_release(keyword)
1430 :
1431 : CALL keyword_create(keyword, __LOCATION__, name="NN", &
1432 : description="Specifies the NN parameter in the F function.", &
1433 : usage="NN {real}", default_r_val=1.5_dp, &
1434 5848 : n_var=1)
1435 5848 : CALL section_add_keyword(section, keyword)
1436 5848 : CALL keyword_release(keyword)
1437 :
1438 : CALL keyword_create(keyword, __LOCATION__, name="pF", &
1439 : description="Sets the value of the numerator of the exponential factor"// &
1440 : " in the F function.", &
1441 : usage="pF {integer}", default_i_val=8, &
1442 5848 : n_var=1)
1443 5848 : CALL section_add_keyword(section, keyword)
1444 5848 : CALL keyword_release(keyword)
1445 :
1446 : CALL keyword_create(keyword, __LOCATION__, name="qF", &
1447 : description="Sets the value of the denominator of the exponential factor"// &
1448 : " in the F function.", &
1449 : usage="qF {integer}", default_i_val=16, &
1450 5848 : n_var=1)
1451 5848 : CALL section_add_keyword(section, keyword)
1452 5848 : CALL keyword_release(keyword)
1453 :
1454 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
1455 : description="Specify the LAMBDA parameter in the hydronium function.", &
1456 : usage="LAMBDA {real}", default_r_val=20.0_dp, &
1457 5848 : n_var=1)
1458 5848 : CALL section_add_keyword(section, keyword)
1459 5848 : CALL keyword_release(keyword)
1460 :
1461 5848 : END SUBROUTINE create_colvar_hydronium_dist_section
1462 :
1463 : ! **************************************************************************************************
1464 : !> \brief collective variables specifying the solvation of carboxylic acid;
1465 : !> distance between hydronium ion and acetate ion; Equation (2) in
1466 : !> Supplementary Information of J. Am. Chem. Soc.,128, 2006, 11318
1467 : !> \param section the section to be created
1468 : !> \author Dorothea Golze
1469 : ! **************************************************************************************************
1470 5848 : SUBROUTINE create_colvar_acid_hyd_dist_section(section)
1471 : TYPE(section_type), POINTER :: section
1472 :
1473 : TYPE(keyword_type), POINTER :: keyword
1474 :
1475 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1476 : CALL section_create(section, __LOCATION__, name="ACID_HYDRONIUM_DISTANCE", &
1477 : description="Section to define the dissociation of a carboxylic acid in"// &
1478 : " water. Distance between hydronium ion and acetate ion. Equation (2)"// &
1479 : " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318.", &
1480 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1481 :
1482 5848 : NULLIFY (keyword)
1483 :
1484 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS_WATER", &
1485 : description="Specifies indexes of atoms building the coordination variable."// &
1486 : " Oxygens of the water molecules. ", &
1487 : usage="OXYGENS_WATER {integer} {integer} ..", repeats=.TRUE., &
1488 5848 : n_var=-1, type_of_var=integer_t)
1489 5848 : CALL section_add_keyword(section, keyword)
1490 5848 : CALL keyword_release(keyword)
1491 :
1492 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS_ACID", &
1493 : description="Specifies indexes of atoms building the coordination variable."// &
1494 : " Oxygens of the carboxyl groups.", &
1495 : usage="OXYGENS_ACID {integer} {integer} ..", repeats=.TRUE., &
1496 5848 : n_var=-1, type_of_var=integer_t)
1497 5848 : CALL section_add_keyword(section, keyword)
1498 5848 : CALL keyword_release(keyword)
1499 :
1500 : CALL keyword_create(keyword, __LOCATION__, name="HYDROGENS", &
1501 : description="Specifies indexes of atoms building the coordination variable."// &
1502 : " Hydrogens of the water molecules and of the carboxyl groups.", &
1503 : usage="HYDROGENS {integer} {integer} ..", repeats=.TRUE., &
1504 5848 : n_var=-1, type_of_var=integer_t)
1505 5848 : CALL section_add_keyword(section, keyword)
1506 5848 : CALL keyword_release(keyword)
1507 :
1508 : CALL keyword_create(keyword, __LOCATION__, name="pWOH", &
1509 : description="Sets the value of the numerator of the exponential factor"// &
1510 : " in the coordination function: number of hydrogens per water molecule.", &
1511 : usage="pWOH {integer}", default_i_val=8, &
1512 5848 : n_var=1)
1513 5848 : CALL section_add_keyword(section, keyword)
1514 5848 : CALL keyword_release(keyword)
1515 :
1516 : CALL keyword_create(keyword, __LOCATION__, name="qWOH", &
1517 : description="Sets the value of the denominator of the exponential factor"// &
1518 : " in the coordination function: number of hydrogens per water molecule.", &
1519 : usage="qWOH {integer}", default_i_val=16, &
1520 5848 : n_var=1)
1521 5848 : CALL section_add_keyword(section, keyword)
1522 5848 : CALL keyword_release(keyword)
1523 :
1524 : CALL keyword_create(keyword, __LOCATION__, name="RWOH", &
1525 : description="Specify the rc parameter in the coordination function:"// &
1526 : " number of hydrogens per water molecule.", &
1527 : usage="RWOH {real}", default_r_val=cp_unit_to_cp2k(value=2.4_dp, &
1528 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1529 5848 : CALL section_add_keyword(section, keyword)
1530 5848 : CALL keyword_release(keyword)
1531 :
1532 : CALL keyword_create(keyword, __LOCATION__, name="pAOH", &
1533 : description="Sets the value of the numerator of the exponential factor"// &
1534 : " in the coordination function: number of hydrogens per carboxyl group.", &
1535 : usage="pAOH {integer}", default_i_val=6, &
1536 5848 : n_var=1)
1537 5848 : CALL section_add_keyword(section, keyword)
1538 5848 : CALL keyword_release(keyword)
1539 :
1540 : CALL keyword_create(keyword, __LOCATION__, name="qAOH", &
1541 : description="Sets the value of the denominator of the exponential factor"// &
1542 : " in the coordination function: number of hydrogens per carboxyl group.", &
1543 : usage="qAOH {integer}", default_i_val=14, &
1544 5848 : n_var=1)
1545 5848 : CALL section_add_keyword(section, keyword)
1546 5848 : CALL keyword_release(keyword)
1547 :
1548 : CALL keyword_create(keyword, __LOCATION__, name="RAOH", &
1549 : description="Specify the rc parameter in the coordination function:"// &
1550 : " number of hydrogens per carboxyl group.", &
1551 : usage="RAOH {real}", default_r_val=cp_unit_to_cp2k(value=2.4_dp, &
1552 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1553 5848 : CALL section_add_keyword(section, keyword)
1554 5848 : CALL keyword_release(keyword)
1555 :
1556 : CALL keyword_create(keyword, __LOCATION__, name="pCUT", &
1557 : description="Sets the value of the numerator of the exponential factor"// &
1558 : " in the cutoff function.", &
1559 : usage="pCUT {integer}", default_i_val=6, &
1560 5848 : n_var=1)
1561 5848 : CALL section_add_keyword(section, keyword)
1562 5848 : CALL keyword_release(keyword)
1563 :
1564 : CALL keyword_create(keyword, __LOCATION__, name="qCUT", &
1565 : description="Sets the value of the denominator of the exponential factor"// &
1566 : " in the cutoff function.", &
1567 : usage="qCUT {integer}", default_i_val=12, &
1568 5848 : n_var=1)
1569 5848 : CALL section_add_keyword(section, keyword)
1570 5848 : CALL keyword_release(keyword)
1571 :
1572 : CALL keyword_create(keyword, __LOCATION__, name="NC", &
1573 : description="Specifies the NC parameter in the cutoff function.", &
1574 : usage="NC {real}", default_r_val=0.56_dp, &
1575 5848 : n_var=1)
1576 5848 : CALL section_add_keyword(section, keyword)
1577 5848 : CALL keyword_release(keyword)
1578 :
1579 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
1580 : variants=["LAMBDA"], &
1581 : description="Specifies the LAMBDA parameter carboxylic acid function.", &
1582 : usage="LAMBDA {real}", default_r_val=20.0_dp, &
1583 11696 : n_var=1)
1584 5848 : CALL section_add_keyword(section, keyword)
1585 5848 : CALL keyword_release(keyword)
1586 :
1587 5848 : END SUBROUTINE create_colvar_acid_hyd_dist_section
1588 :
1589 : ! **************************************************************************************************
1590 : !> \brief collective variables specifying the solvation of carboxylic acid;
1591 : !> number of oxygens in the 1st shell of the hydronium; Equation (3) in
1592 : !> Supplementary Information of J. Am. Chem. Soc.,128, 2006, 11318
1593 : !> \param section the section to be created
1594 : !> \author Dorothea Golze
1595 : ! **************************************************************************************************
1596 5848 : SUBROUTINE create_colvar_acid_hyd_shell_section(section)
1597 : TYPE(section_type), POINTER :: section
1598 :
1599 : TYPE(keyword_type), POINTER :: keyword
1600 :
1601 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1602 : CALL section_create(section, __LOCATION__, name="ACID_HYDRONIUM_SHELL", &
1603 : description="Section to define the dissociation of a carboxylic acid in"// &
1604 : " water. Number of oxygens in the 1st shell of the hydronium. Equation (3)"// &
1605 : " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318. Similar to"// &
1606 : " the HYDRONIUM colvar, but with modification for the acid.", &
1607 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1608 :
1609 5848 : NULLIFY (keyword)
1610 :
1611 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS_WATER", &
1612 : description="Specifies indexes of atoms building the coordination variable."// &
1613 : " Oxygens of the water molecules. ", &
1614 : usage="OXYGENS_WATER {integer} {integer} ..", repeats=.TRUE., &
1615 5848 : n_var=-1, type_of_var=integer_t)
1616 5848 : CALL section_add_keyword(section, keyword)
1617 5848 : CALL keyword_release(keyword)
1618 :
1619 : CALL keyword_create(keyword, __LOCATION__, name="OXYGENS_ACID", &
1620 : description="Specifies indexes of atoms building the coordination variable."// &
1621 : " Oxygens of the carboxyl groups.", &
1622 : usage="OXYGENS_ACID {integer} {integer} ..", repeats=.TRUE., &
1623 5848 : n_var=-1, type_of_var=integer_t)
1624 5848 : CALL section_add_keyword(section, keyword)
1625 5848 : CALL keyword_release(keyword)
1626 :
1627 : CALL keyword_create(keyword, __LOCATION__, name="HYDROGENS", &
1628 : description="Specifies indexes of atoms building the coordination variable."// &
1629 : " Hydrogens of the water molecules and of the carboxyl groups.", &
1630 : usage="HYDROGENS {integer} {integer} ..", repeats=.TRUE., &
1631 5848 : n_var=-1, type_of_var=integer_t)
1632 5848 : CALL section_add_keyword(section, keyword)
1633 5848 : CALL keyword_release(keyword)
1634 :
1635 : CALL keyword_create(keyword, __LOCATION__, name="pWOH", &
1636 : description="Sets the value of the numerator of the exponential factor"// &
1637 : " in the coordination function: number of hydrogens per water molecule.", &
1638 : usage="pWOH {integer}", default_i_val=8, &
1639 5848 : n_var=1)
1640 5848 : CALL section_add_keyword(section, keyword)
1641 5848 : CALL keyword_release(keyword)
1642 :
1643 : CALL keyword_create(keyword, __LOCATION__, name="qWOH", &
1644 : description="Sets the value of the denominator of the exponential factor"// &
1645 : " in the coordination function: number of hydrogens per water molecule.", &
1646 : usage="qWOH {integer}", default_i_val=16, &
1647 5848 : n_var=1)
1648 5848 : CALL section_add_keyword(section, keyword)
1649 5848 : CALL keyword_release(keyword)
1650 :
1651 : CALL keyword_create(keyword, __LOCATION__, name="RWOH", &
1652 : description="Specifies the rc parameter in the coordination function:"// &
1653 : " number of hydrogens per water molecule.", &
1654 : usage="RWOH {real}", default_r_val=cp_unit_to_cp2k(value=2.4_dp, &
1655 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1656 5848 : CALL section_add_keyword(section, keyword)
1657 5848 : CALL keyword_release(keyword)
1658 :
1659 : CALL keyword_create(keyword, __LOCATION__, name="pAOH", &
1660 : description="Sets the value of the numerator of the exponential factor"// &
1661 : " in the coordination function: number of hydrogens per carboxyl group.", &
1662 : usage="pAOH {integer}", default_i_val=6, &
1663 5848 : n_var=1)
1664 5848 : CALL section_add_keyword(section, keyword)
1665 5848 : CALL keyword_release(keyword)
1666 :
1667 : CALL keyword_create(keyword, __LOCATION__, name="qAOH", &
1668 : description="Sets the value of the denominator of the exponential factor"// &
1669 : " in the coordination function: number of hydrogens per carboxyl group.", &
1670 : usage="qAOH {integer}", default_i_val=14, &
1671 5848 : n_var=1)
1672 5848 : CALL section_add_keyword(section, keyword)
1673 5848 : CALL keyword_release(keyword)
1674 :
1675 : CALL keyword_create(keyword, __LOCATION__, name="RAOH", &
1676 : description="Specifies the rc parameter in the coordination function:"// &
1677 : " number of hydrogens per carboxyl group.", &
1678 : usage="RAOH {real}", default_r_val=cp_unit_to_cp2k(value=2.4_dp, &
1679 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1680 5848 : CALL section_add_keyword(section, keyword)
1681 5848 : CALL keyword_release(keyword)
1682 :
1683 : CALL keyword_create(keyword, __LOCATION__, name="pOO", &
1684 : description="Sets the value of the numerator of the exponential factor"// &
1685 : " in the coordination function: number of oxygens per water oxygen.", &
1686 : usage="pOO {integer}", default_i_val=6, &
1687 5848 : n_var=1)
1688 5848 : CALL section_add_keyword(section, keyword)
1689 5848 : CALL keyword_release(keyword)
1690 :
1691 : CALL keyword_create(keyword, __LOCATION__, name="qOO", &
1692 : description="Sets the value of the denominator of the exponential factor"// &
1693 : " in the coordination function: number of oxygens per water oxygen.", &
1694 : usage="qOO {integer}", default_i_val=12, &
1695 5848 : n_var=1)
1696 5848 : CALL section_add_keyword(section, keyword)
1697 5848 : CALL keyword_release(keyword)
1698 :
1699 : CALL keyword_create(keyword, __LOCATION__, name="ROO", &
1700 : description="Specifies the rc parameter in the coordination function:"// &
1701 : " number of oxygens per water oxygen.", &
1702 : usage="ROO {real}", default_r_val=cp_unit_to_cp2k(value=5.5_dp, &
1703 5848 : unit_str="bohr"), unit_str="bohr", n_var=1)
1704 5848 : CALL section_add_keyword(section, keyword)
1705 5848 : CALL keyword_release(keyword)
1706 :
1707 : CALL keyword_create(keyword, __LOCATION__, name="pM", &
1708 : description="Sets the value of the numerator of the exponential factor"// &
1709 : " in the M function.", &
1710 : usage="pM {integer}", default_i_val=8, &
1711 5848 : n_var=1)
1712 5848 : CALL section_add_keyword(section, keyword)
1713 5848 : CALL keyword_release(keyword)
1714 :
1715 : CALL keyword_create(keyword, __LOCATION__, name="qM", &
1716 : description="Sets the value of the denominator of the exponential factor"// &
1717 : " in the M function.", &
1718 : usage="qM {integer}", default_i_val=16, &
1719 5848 : n_var=1)
1720 5848 : CALL section_add_keyword(section, keyword)
1721 5848 : CALL keyword_release(keyword)
1722 :
1723 : CALL keyword_create(keyword, __LOCATION__, name="NH", &
1724 : description="Specifies the NH parameter in the M function.", &
1725 : usage="NH {real}", default_r_val=2.2_dp, &
1726 5848 : n_var=1)
1727 5848 : CALL section_add_keyword(section, keyword)
1728 5848 : CALL keyword_release(keyword)
1729 :
1730 : CALL keyword_create(keyword, __LOCATION__, name="pCUT", &
1731 : description="Sets the value of the numerator of the exponential factor"// &
1732 : " in the cutoff function.", &
1733 : usage="pCUT {integer}", default_i_val=6, &
1734 5848 : n_var=1)
1735 5848 : CALL section_add_keyword(section, keyword)
1736 5848 : CALL keyword_release(keyword)
1737 :
1738 : CALL keyword_create(keyword, __LOCATION__, name="qCUT", &
1739 : description="Sets the value of the denominator of the exponential factor"// &
1740 : " in the cutoff function.", &
1741 : usage="qCUT {integer}", default_i_val=12, &
1742 5848 : n_var=1)
1743 5848 : CALL section_add_keyword(section, keyword)
1744 5848 : CALL keyword_release(keyword)
1745 :
1746 : CALL keyword_create(keyword, __LOCATION__, name="NC", &
1747 : description="Specifies the NC parameter in the cutoff function.", &
1748 : usage="NC {real}", default_r_val=0.9_dp, &
1749 5848 : n_var=1)
1750 5848 : CALL section_add_keyword(section, keyword)
1751 5848 : CALL keyword_release(keyword)
1752 :
1753 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
1754 : variants=["LAMBDA"], &
1755 : description="Specifies the LAMBDA parameter carboxylic acid function.", &
1756 : usage="LAMBDA {real}", default_r_val=10.0_dp, &
1757 11696 : n_var=1)
1758 5848 : CALL section_add_keyword(section, keyword)
1759 5848 : CALL keyword_release(keyword)
1760 :
1761 5848 : END SUBROUTINE create_colvar_acid_hyd_shell_section
1762 :
1763 : ! **************************************************************************************************
1764 : !> \brief ...
1765 : !> \param section ...
1766 : ! **************************************************************************************************
1767 5848 : SUBROUTINE create_colvar_rmsd_section(section)
1768 : TYPE(section_type), POINTER :: section
1769 :
1770 : TYPE(keyword_type), POINTER :: keyword
1771 : TYPE(section_type), POINTER :: subsection, subsubsection
1772 :
1773 5848 : CPASSERT(.NOT. ASSOCIATED(section))
1774 : CALL section_create(section, __LOCATION__, name="rmsd", &
1775 : description="Section to define a CV as function of RMSD computed with respect to"// &
1776 : " given reference configurations. For 2 configurations the colvar is equal to:"// &
1777 : " ss = (RMSDA-RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the"// &
1778 : " colvar is just the RMSD from that frame.", &
1779 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1780 :
1781 5848 : NULLIFY (keyword, subsection, subsubsection)
1782 : CALL keyword_create(keyword, __LOCATION__, name="SUBSET_TYPE", &
1783 : description="Define the subsytem used to compute the RMSD. With ALL the displacements"// &
1784 : " are mass-weighted, with LIST all weights are set to 1,"// &
1785 : " with WEIGHT_LIST a list of weights is expected from input.", &
1786 : usage="SUBSET_TYPE ALL", &
1787 : enum_c_vals=s2a("ALL", "LIST", "WEIGHT_LIST"), &
1788 : enum_i_vals=[rmsd_all, rmsd_list, rmsd_weightlist], &
1789 5848 : default_i_val=rmsd_all)
1790 5848 : CALL section_add_keyword(section, keyword)
1791 5848 : CALL keyword_release(keyword)
1792 :
1793 : CALL keyword_create(keyword, __LOCATION__, name="ALIGN_FRAMES", &
1794 : description="Whether the reference frames should be aligned to minimize the RMSD", &
1795 : usage="ALIGN_FRAMES", &
1796 5848 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1797 5848 : CALL section_add_keyword(section, keyword)
1798 5848 : CALL keyword_release(keyword)
1799 :
1800 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1801 : description="Specify indexes of atoms building the subset. ", &
1802 : usage="ATOMS {integer} {integer} ..", repeats=.TRUE., &
1803 5848 : n_var=-1, type_of_var=integer_t)
1804 5848 : CALL section_add_keyword(section, keyword)
1805 5848 : CALL keyword_release(keyword)
1806 :
1807 : CALL keyword_create(keyword, __LOCATION__, name="WEIGHTS", &
1808 : description="Specify weights of atoms building the subset. It is used only with WEIGHT_LIST ", &
1809 : usage="weightS {real} {real} ..", repeats=.TRUE., &
1810 5848 : n_var=-1, type_of_var=real_t)
1811 5848 : CALL section_add_keyword(section, keyword)
1812 5848 : CALL keyword_release(keyword)
1813 :
1814 : CALL section_create(subsection, __LOCATION__, name="FRAME", &
1815 : description="Specify coordinates of the frame (number of frames can be either 1 or 2)", &
1816 5848 : repeats=.TRUE.)
1817 :
1818 : CALL keyword_create(keyword, __LOCATION__, name="COORD_FILE_NAME", &
1819 : description="Name of the xyz file with coordinates (alternative to &COORD section)", &
1820 : usage="COORD_FILE_NAME <CHAR>", &
1821 5848 : default_lc_val="")
1822 5848 : CALL section_add_keyword(subsection, keyword)
1823 5848 : CALL keyword_release(keyword)
1824 :
1825 5848 : CALL create_coord_section_cv(subsubsection, "RMSD")
1826 5848 : CALL section_add_subsection(subsection, subsubsection)
1827 5848 : CALL section_release(subsubsection)
1828 :
1829 5848 : CALL section_add_subsection(section, subsection)
1830 5848 : CALL section_release(subsection)
1831 :
1832 5848 : END SUBROUTINE create_colvar_rmsd_section
1833 :
1834 : ! **************************************************************************************************
1835 : !> \brief collective variables specifying the space orthogonal to the reaction path
1836 : !> in the space spanned by the involved collective coordinates
1837 : !> \param section the section to be created
1838 : !> \author fschiff
1839 : ! **************************************************************************************************
1840 1462 : SUBROUTINE create_colvar_rpath_section(section)
1841 : TYPE(section_type), POINTER :: section
1842 :
1843 1462 : CPASSERT(.NOT. ASSOCIATED(section))
1844 : CALL section_create(section, __LOCATION__, name="REACTION_PATH", &
1845 : description="Section defining a one dimensional reaction path in an Q-dimensional space of colvars. "// &
1846 : "Constraining this colvar, allows to sample the space orthogonal to the reaction path, "// &
1847 : "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1848 : "For the details of the function see cited literature."//newline//newline// &
1849 : "The default is to use the colvars defined in the COLVAR subsections, which "// &
1850 : "requires FUNCTION, VARIABLE, RANGE, STEP_SIZE keywords and optionally "// &
1851 : "the MAP print key. Switching on either RMSD or DISTANCES_RMSD (which are "// &
1852 : "mutually exclusive) instead requires the SUBSET_TYPE, ALIGN_FRAMES (and "// &
1853 : "optionally ATOMS) keywords and the FRAME subsections. The LAMBDA keyword "// &
1854 : "is always required for each of the three possibilities.", &
1855 : n_keywords=1, n_subsections=0, repeats=.FALSE., &
1856 2924 : citations=[Branduardi2007])
1857 :
1858 1462 : CALL keywords_colvar_path(section)
1859 1462 : END SUBROUTINE create_colvar_rpath_section
1860 :
1861 : ! **************************************************************************************************
1862 : !> \brief Distance from reaction path
1863 : !> \param section the section to be created
1864 : !> \author 01.2010
1865 : ! **************************************************************************************************
1866 1462 : SUBROUTINE create_colvar_dpath_section(section)
1867 : TYPE(section_type), POINTER :: section
1868 :
1869 1462 : CPASSERT(.NOT. ASSOCIATED(section))
1870 : CALL section_create(section, __LOCATION__, name="DISTANCE_FROM_PATH", &
1871 : description="Section defining the distance from a one dimensional reaction "// &
1872 : "path in an Q-dimensional space of colvars. "// &
1873 : "Constraining this colvar, allows to sample the space equidistant to the reaction path, "// &
1874 : "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1875 : "For the details of the function see cited literature."//newline//newline// &
1876 : "The default is to use the colvars defined in the COLVAR subsections, which "// &
1877 : "requires FUNCTION, VARIABLE, RANGE, STEP_SIZE keywords and optionally "// &
1878 : "the MAP print key. Switching on either RMSD or DISTANCES_RMSD (which are "// &
1879 : "mutually exclusive) instead requires the SUBSET_TYPE, ALIGN_FRAMES (and "// &
1880 : "optionally ATOMS) keywords and the FRAME subsections. The LAMBDA keyword "// &
1881 : "is always required for each of the three possibilities.", &
1882 : n_keywords=1, n_subsections=0, repeats=.FALSE., &
1883 2924 : citations=[Branduardi2007])
1884 :
1885 1462 : CALL keywords_colvar_path(section)
1886 1462 : END SUBROUTINE create_colvar_dpath_section
1887 :
1888 : ! **************************************************************************************************
1889 : !> \brief Section describing keywords for both reaction path and distance from reaction path
1890 : !> \param section the section to be created
1891 : !> \author 01.2010
1892 : ! **************************************************************************************************
1893 2924 : SUBROUTINE keywords_colvar_path(section)
1894 :
1895 : TYPE(section_type), POINTER :: section
1896 :
1897 : TYPE(keyword_type), POINTER :: keyword
1898 : TYPE(section_type), POINTER :: print_key, subsection, subsubsection
1899 :
1900 2924 : NULLIFY (keyword, subsection, subsubsection, print_key)
1901 2924 : CALL create_colvar_section(subsection, skip_recursive_colvar=.TRUE.)
1902 2924 : CALL section_add_subsection(section, subsection)
1903 2924 : CALL section_release(subsection)
1904 :
1905 : CALL keyword_create(keyword, __LOCATION__, name="DISTANCES_RMSD", &
1906 : description="Whether to use distances RMSD instead of COLVARs.", &
1907 : usage="DISTANCES_RMSD T", &
1908 2924 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1909 2924 : CALL section_add_keyword(section, keyword)
1910 2924 : CALL keyword_release(keyword)
1911 :
1912 : CALL keyword_create(keyword, __LOCATION__, name="RMSD", &
1913 : description="Whether to use RMSD instead of COLVARs.", &
1914 : usage="RMSD T", &
1915 2924 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1916 2924 : CALL section_add_keyword(section, keyword)
1917 2924 : CALL keyword_release(keyword)
1918 :
1919 : CALL keyword_create(keyword, __LOCATION__, name="SUBSET_TYPE", &
1920 : description="Define the subsytem used to compute the RMSD", &
1921 : usage="SUBSET_TYPE ALL", &
1922 : enum_c_vals=s2a("ALL", "LIST"), &
1923 : enum_i_vals=[rmsd_all, rmsd_list], &
1924 2924 : default_i_val=rmsd_all)
1925 2924 : CALL section_add_keyword(section, keyword)
1926 2924 : CALL keyword_release(keyword)
1927 :
1928 : CALL keyword_create(keyword, __LOCATION__, name="ALIGN_FRAMES", &
1929 : description="Whether the reference frames should be aligned to minimize the RMSD", &
1930 : usage="ALIGN_FRAMES", &
1931 2924 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1932 2924 : CALL section_add_keyword(section, keyword)
1933 2924 : CALL keyword_release(keyword)
1934 :
1935 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1936 : description="Specify indexes of atoms building the subset. ", &
1937 : usage="ATOMS {integer} {integer} ..", repeats=.TRUE., &
1938 2924 : n_var=-1, type_of_var=integer_t)
1939 2924 : CALL section_add_keyword(section, keyword)
1940 2924 : CALL keyword_release(keyword)
1941 :
1942 : CALL section_create(subsection, __LOCATION__, name="FRAME", &
1943 : description="Specify coordinates of the frame", &
1944 2924 : repeats=.TRUE.)
1945 :
1946 : CALL keyword_create(keyword, __LOCATION__, name="COORD_FILE_NAME", &
1947 : description="Name of the xyz file with coordinates (alternative to &COORD section)", &
1948 : usage="COORD_FILE_NAME <CHAR>", &
1949 2924 : default_lc_val="")
1950 2924 : CALL section_add_keyword(subsection, keyword)
1951 2924 : CALL keyword_release(keyword)
1952 :
1953 2924 : CALL create_coord_section_cv(subsubsection, "RMSD")
1954 2924 : CALL section_add_subsection(subsection, subsubsection)
1955 2924 : CALL section_release(subsubsection)
1956 :
1957 2924 : CALL section_add_subsection(section, subsection)
1958 2924 : CALL section_release(subsection)
1959 :
1960 : CALL keyword_create(keyword, __LOCATION__, name="FUNCTION", &
1961 : description="Specifies the ith element of the vector valued function that "// &
1962 : "defines the reaction path. This keyword needs to repeat exactly Q times, "// &
1963 : "and the order must match the order of the colvars defined in the COLVAR "// &
1964 : "subsections. The VARIABLE (e.g. T) which parametrises the curve can be "// &
1965 : "used as the target of a constraint. "//docf(), &
1966 : usage="FUNCTION (sin(T+2)+2*T)", type_of_var=lchar_t, &
1967 2924 : n_var=1, default_lc_val="0", repeats=.TRUE.)
1968 2924 : CALL section_add_keyword(section, keyword)
1969 2924 : CALL keyword_release(keyword)
1970 :
1971 : CALL keyword_create(keyword, __LOCATION__, name="VARIABLE", &
1972 : description="Specifies the name of the variable that parametrises the FUNCTION "// &
1973 : "defining the reaction path. All Q functions must use this variable.", &
1974 : usage="VARIABLE T", type_of_var=char_t, &
1975 2924 : n_var=1, repeats=.FALSE.)
1976 2924 : CALL section_add_keyword(section, keyword)
1977 2924 : CALL keyword_release(keyword)
1978 :
1979 : CALL keyword_create( &
1980 : keyword, __LOCATION__, name="LAMBDA", &
1981 : description="Specifies the exponent of the Gaussian used in the integral representation of the colvar. "// &
1982 : "The shape of the space orthogonal to the reaction path is defined by this choice. "// &
1983 : "In the limit of large values, it is given by the plane orthogonal to the path. "// &
1984 : "In practice, modest values are required for stable numerical integration.", &
1985 : usage="LAMBDA {real}", &
1986 2924 : type_of_var=real_t, default_r_val=5.0_dp)
1987 2924 : CALL section_add_keyword(section, keyword)
1988 2924 : CALL keyword_release(keyword)
1989 :
1990 : CALL keyword_create(keyword, __LOCATION__, name="STEP_SIZE", &
1991 : description="Step size in the numerical integration, "// &
1992 : "a few thousand points are common, and the proper number also depends on LAMBDA.", &
1993 : usage="STEP_SIZE {real}", &
1994 2924 : type_of_var=real_t, default_r_val=0.01_dp)
1995 2924 : CALL section_add_keyword(section, keyword)
1996 2924 : CALL keyword_release(keyword)
1997 :
1998 : CALL keyword_create(keyword, __LOCATION__, name="RANGE", &
1999 : description="The range of VARIABLE used for the parametrisation.", &
2000 : usage="RANGE <REAL> <REAL>", &
2001 2924 : n_var=2, type_of_var=real_t)
2002 2924 : CALL section_add_keyword(section, keyword)
2003 2924 : CALL keyword_release(keyword)
2004 :
2005 : CALL cp_print_key_section_create( &
2006 : print_key, __LOCATION__, name="MAP", &
2007 : description="Activating this print key will print once a file with the values of the FUNCTION on a grid "// &
2008 : "of COLVAR values in a specified range. "// &
2009 : "GRID_SPACING and RANGE for every COLVAR has to be specified again in the same order as they are in the input.", &
2010 2924 : print_level=high_print_level, filename="PATH")
2011 :
2012 : CALL keyword_create(keyword, __LOCATION__, name="RANGE", &
2013 : description="The range of of the grid of the COLVAR.", &
2014 : usage="RANGE <REAL> <REAL>", &
2015 2924 : n_var=2, type_of_var=real_t, repeats=.TRUE.)
2016 2924 : CALL section_add_keyword(print_key, keyword)
2017 2924 : CALL keyword_release(keyword)
2018 :
2019 : CALL keyword_create(keyword, __LOCATION__, name="GRID_SPACING", &
2020 : description="Distance between two gridpoints for the grid on the COLVAR", &
2021 : usage="GRID_SPACING {real}", repeats=.TRUE., &
2022 2924 : type_of_var=real_t, default_r_val=0.01_dp)
2023 2924 : CALL section_add_keyword(print_key, keyword)
2024 2924 : CALL keyword_release(keyword)
2025 :
2026 2924 : CALL section_add_subsection(section, print_key)
2027 2924 : CALL section_release(print_key)
2028 :
2029 2924 : END SUBROUTINE keywords_colvar_path
2030 :
2031 : ! **************************************************************************************************
2032 : !> \brief Colvar allowing a combination of COLVARS
2033 : !> \param section the section to be created
2034 : !> \author Teodoro Laino [tlaino] - 12.2008
2035 : ! **************************************************************************************************
2036 1462 : SUBROUTINE create_colvar_comb_section(section)
2037 : TYPE(section_type), POINTER :: section
2038 :
2039 : TYPE(section_type), POINTER :: subsection
2040 :
2041 1462 : CPASSERT(.NOT. ASSOCIATED(section))
2042 :
2043 : CALL create_function_section(section, "COMBINE_COLVAR", "FUNCTION", &
2044 : description="Defines a COLVAR as a combination of several other "// &
2045 : "COLVARs with a generic function. To allow an efficient mapping "// &
2046 : "the order of the COLVARs will be considered identical to the "// &
2047 : "order of definition in the input file, and no extraneous COLVAR "// &
2048 : "that is not involved in the generic function should be present.", &
2049 1462 : do_deriv=.TRUE.)
2050 :
2051 1462 : NULLIFY (subsection)
2052 1462 : CALL create_colvar_section(subsection, skip_recursive_colvar=.TRUE.)
2053 1462 : CALL section_add_subsection(section, subsection)
2054 1462 : CALL section_release(subsection)
2055 :
2056 1462 : END SUBROUTINE create_colvar_comb_section
2057 :
2058 : ! **************************************************************************************************
2059 : !> \brief Creates the coord section
2060 : !> \param section the section to create
2061 : !> \param name ...
2062 : !> \author teo
2063 : ! **************************************************************************************************
2064 8772 : SUBROUTINE create_coord_section_cv(section, name)
2065 : TYPE(section_type), POINTER :: section
2066 : CHARACTER(LEN=*), INTENT(IN) :: name
2067 :
2068 : TYPE(keyword_type), POINTER :: keyword
2069 :
2070 8772 : CPASSERT(.NOT. ASSOCIATED(section))
2071 : CALL section_create(section, __LOCATION__, name="coord", &
2072 : description="The positions for "//TRIM(name)//" used for restart", &
2073 8772 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
2074 8772 : NULLIFY (keyword)
2075 :
2076 : CALL keyword_create(keyword, __LOCATION__, name="_DEFAULT_KEYWORD_", &
2077 : description="Specify positions of the system", repeats=.TRUE., &
2078 8772 : usage="{Real} ...", type_of_var=real_t, n_var=-1)
2079 8772 : CALL section_add_keyword(section, keyword)
2080 8772 : CALL keyword_release(keyword)
2081 :
2082 8772 : END SUBROUTINE create_coord_section_cv
2083 :
2084 : ! **************************************************************************************************
2085 : !> \brief collective variables specifying h bonds
2086 : !> \param section the section to be created
2087 : !> \author alin m elena
2088 : ! **************************************************************************************************
2089 5848 : SUBROUTINE create_colvar_wc_section(section)
2090 : TYPE(section_type), POINTER :: section
2091 :
2092 : TYPE(keyword_type), POINTER :: keyword
2093 : TYPE(section_type), POINTER :: subsection
2094 :
2095 5848 : CPASSERT(.NOT. ASSOCIATED(section))
2096 : CALL section_create(section, __LOCATION__, name="wc", &
2097 : description="Section to define the hbond wannier centre as a collective variables.", &
2098 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
2099 5848 : NULLIFY (keyword, subsection)
2100 :
2101 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2102 : description="Parameter used for computing the cutoff radius for searching "// &
2103 : "the wannier centres around an atom", &
2104 : usage="RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str="angstrom", &
2105 5848 : type_of_var=real_t, repeats=.FALSE.)
2106 5848 : CALL section_add_keyword(section, keyword)
2107 5848 : CALL keyword_release(keyword)
2108 :
2109 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2110 : variants=["POINTS"], &
2111 : description="Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2112 : usage="ATOMS {integer} {integer} {integer}", &
2113 11696 : n_var=3, type_of_var=integer_t, repeats=.TRUE.)
2114 5848 : CALL section_add_keyword(section, keyword)
2115 5848 : CALL keyword_release(keyword)
2116 :
2117 : ! Must be present in each colvar and handled properly
2118 5848 : CALL create_point_section(subsection)
2119 5848 : CALL section_add_subsection(section, subsection)
2120 5848 : CALL section_release(subsection)
2121 :
2122 5848 : END SUBROUTINE create_colvar_wc_section
2123 :
2124 : ! **************************************************************************************************
2125 : !> \brief collective variables specifying h bonds= wire
2126 : !> \param section the section to be created
2127 : !> \author alin m elena
2128 : ! **************************************************************************************************
2129 5848 : SUBROUTINE create_colvar_hbp_section(section)
2130 : TYPE(section_type), POINTER :: section
2131 :
2132 : TYPE(keyword_type), POINTER :: keyword
2133 : TYPE(section_type), POINTER :: subsection
2134 :
2135 5848 : CPASSERT(.NOT. ASSOCIATED(section))
2136 : CALL section_create(section, __LOCATION__, name="hbp", &
2137 : description="Section to define the hbond wannier centre as a collective variables.", &
2138 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
2139 5848 : NULLIFY (keyword, subsection)
2140 :
2141 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2142 : description="Parameter used for computing the cutoff radius for searching "// &
2143 : "the wannier centres around an atom", &
2144 : usage="RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str="angstrom", &
2145 5848 : type_of_var=real_t, repeats=.FALSE.)
2146 5848 : CALL section_add_keyword(section, keyword)
2147 5848 : CALL keyword_release(keyword)
2148 :
2149 : CALL keyword_create(keyword, __LOCATION__, name="SHIFT", &
2150 : description="Parameter used for shifting each term in the sum ", &
2151 : usage="SHIFT <REAL>", default_r_val=0.5_dp, &
2152 5848 : type_of_var=real_t, repeats=.FALSE.)
2153 5848 : CALL section_add_keyword(section, keyword)
2154 5848 : CALL keyword_release(keyword)
2155 :
2156 : CALL keyword_create(keyword, __LOCATION__, name="NPOINTS", &
2157 : description="The number of points in the path", &
2158 : usage="NPOINTS {integer}", default_i_val=-1, &
2159 5848 : n_var=1, type_of_var=integer_t, repeats=.FALSE.)
2160 5848 : CALL section_add_keyword(section, keyword)
2161 5848 : CALL keyword_release(keyword)
2162 :
2163 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2164 : variants=["POINTS"], &
2165 : description="Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2166 : usage="ATOMS {integer} {integer} {integer}", &
2167 11696 : n_var=3, type_of_var=integer_t, repeats=.TRUE.)
2168 5848 : CALL section_add_keyword(section, keyword)
2169 5848 : CALL keyword_release(keyword)
2170 :
2171 : ! Must be present in each colvar and handled properly
2172 5848 : CALL create_point_section(subsection)
2173 5848 : CALL section_add_subsection(section, subsection)
2174 5848 : CALL section_release(subsection)
2175 :
2176 5848 : END SUBROUTINE create_colvar_hbp_section
2177 :
2178 : ! **************************************************************************************************
2179 : !> \brief collective variables specifying ring puckering
2180 : !> \brief D. Cremer and J.A. Pople, JACS 97 1354 (1975)
2181 : !> \param section the section to be created
2182 : !> \author Marcel Baer
2183 : ! **************************************************************************************************
2184 5848 : SUBROUTINE create_colvar_ring_puckering_section(section)
2185 : TYPE(section_type), POINTER :: section
2186 :
2187 : TYPE(keyword_type), POINTER :: keyword
2188 : TYPE(section_type), POINTER :: subsection
2189 :
2190 5848 : CPASSERT(.NOT. ASSOCIATED(section))
2191 : CALL section_create(section, __LOCATION__, name="RING_PUCKERING", &
2192 : description="Section to define general ring puckering collective variables.", &
2193 5848 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
2194 :
2195 5848 : NULLIFY (keyword, subsection)
2196 :
2197 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2198 : variants=["POINTS"], &
2199 : description="Specifies the indexes of atoms/points defining the ring. "// &
2200 : "At least 4 Atoms are needed.", &
2201 : usage="ATOMS {integer} {integer} {integer} ..", &
2202 11696 : n_var=-1, type_of_var=integer_t)
2203 5848 : CALL section_add_keyword(section, keyword)
2204 5848 : CALL keyword_release(keyword)
2205 :
2206 : CALL keyword_create(keyword, __LOCATION__, name="COORDINATE", &
2207 : description="Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring. "// &
2208 : "0 is the total puckering variable Q, "// &
2209 : "2..[N/2] are puckering coordinates. "// &
2210 : "-2..-[N/2-1] are puckering angles.", &
2211 : usage="COORDINATE {integer}", default_i_val=0, &
2212 5848 : n_var=1)
2213 5848 : CALL section_add_keyword(section, keyword)
2214 5848 : CALL keyword_release(keyword)
2215 :
2216 : ! Must be present in each colvar and handled properly
2217 5848 : CALL create_point_section(subsection)
2218 5848 : CALL section_add_subsection(section, subsection)
2219 5848 : CALL section_release(subsection)
2220 :
2221 5848 : END SUBROUTINE create_colvar_ring_puckering_section
2222 :
2223 : ! **************************************************************************************************
2224 : !> \brief Creates the VORONOIIPZ collective variable input section
2225 : !> \param section the section to create
2226 : ! **************************************************************************************************
2227 5848 : SUBROUTINE create_voronoiipz_section(section)
2228 : TYPE(section_type), POINTER :: section
2229 :
2230 : TYPE(keyword_type), POINTER :: keyword
2231 :
2232 5848 : CPASSERT(.NOT. ASSOCIATED(section))
2233 5848 : NULLIFY (keyword)
2234 : CALL section_create(section, __LOCATION__, name="VORONOIIPZ", &
2235 : description="Absolute location of a hydronium ion along a Cartesian axis, "// &
2236 : "based on continuous Voronoi weights.", &
2237 11696 : citations=[Zhang2025], n_subsections=0, repeats=.FALSE.)
2238 :
2239 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
2240 : description="Exponent in the Voronoi weight exp(LAMBDA*r). "// &
2241 : "Negative values assign each hydrogen predominantly to nearby oxygen atoms.", &
2242 : usage="LAMBDA [angstrom^-1] -8.0", type_of_var=real_t, &
2243 : default_r_val=cp_unit_to_cp2k(value=-8.0_dp, unit_str="angstrom^-1"), &
2244 5848 : unit_str="angstrom^-1", n_var=1)
2245 5848 : CALL section_add_keyword(section, keyword)
2246 5848 : CALL keyword_release(keyword)
2247 :
2248 : CALL keyword_create(keyword, __LOCATION__, name="ZMID", &
2249 : description="Coordinate of the reference plane along the selected axis.", &
2250 : usage="ZMID [angstrom] 0.0", type_of_var=real_t, default_r_val=0.0_dp, &
2251 5848 : unit_str="angstrom", n_var=1)
2252 5848 : CALL section_add_keyword(section, keyword)
2253 5848 : CALL keyword_release(keyword)
2254 :
2255 : CALL keyword_create(keyword, __LOCATION__, name="ZIDX", &
2256 : description="Cartesian direction used for the ion location: 1=X, 2=Y, 3=Z.", &
2257 5848 : usage="ZIDX 3", type_of_var=integer_t, default_i_val=3, n_var=1)
2258 5848 : CALL section_add_keyword(section, keyword)
2259 5848 : CALL keyword_release(keyword)
2260 :
2261 : CALL keyword_create(keyword, __LOCATION__, name="D_0", &
2262 : description="Reference coordination of the non-reactive GROUPA atoms.", &
2263 5848 : usage="D_0 2.0", type_of_var=real_t, default_r_val=2.0_dp, n_var=1)
2264 5848 : CALL section_add_keyword(section, keyword)
2265 5848 : CALL keyword_release(keyword)
2266 :
2267 : CALL keyword_create(keyword, __LOCATION__, name="D_1", &
2268 : description="Reference coordination of the first reactive GROUPA atom.", &
2269 5848 : usage="D_1 2.0", type_of_var=real_t, default_r_val=2.0_dp, n_var=1)
2270 5848 : CALL section_add_keyword(section, keyword)
2271 5848 : CALL keyword_release(keyword)
2272 :
2273 : CALL keyword_create(keyword, __LOCATION__, name="D_2", &
2274 : description="Reference coordination of the second reactive GROUPA atom.", &
2275 5848 : usage="D_2 2.0", type_of_var=real_t, default_r_val=2.0_dp, n_var=1)
2276 5848 : CALL section_add_keyword(section, keyword)
2277 5848 : CALL keyword_release(keyword)
2278 :
2279 : CALL keyword_create(keyword, __LOCATION__, name="D_3", &
2280 : description="Reference coordination of the third reactive GROUPA atom.", &
2281 5848 : usage="D_3 2.0", type_of_var=real_t, default_r_val=2.0_dp, n_var=1)
2282 5848 : CALL section_add_keyword(section, keyword)
2283 5848 : CALL keyword_release(keyword)
2284 :
2285 : CALL keyword_create(keyword, __LOCATION__, name="NL_CUTOFF", &
2286 : description="Maximum GROUPA-GROUPB distance included in the Voronoi weights.", &
2287 : usage="NL_CUTOFF [angstrom] 2.4", &
2288 : default_r_val=cp_unit_to_cp2k(value=2.4_dp, unit_str="angstrom"), &
2289 5848 : unit_str="angstrom", n_var=1)
2290 5848 : CALL section_add_keyword(section, keyword)
2291 5848 : CALL keyword_release(keyword)
2292 :
2293 : CALL keyword_create(keyword, __LOCATION__, name="GROUPA", &
2294 : description="Oxygen atoms used as Voronoi sites. Any reactive sites must "// &
2295 : "be the final NRX entries.", &
2296 5848 : usage="GROUPA 1 4 7", n_var=-1, type_of_var=integer_t)
2297 5848 : CALL section_add_keyword(section, keyword)
2298 5848 : CALL keyword_release(keyword)
2299 :
2300 : CALL keyword_create(keyword, __LOCATION__, name="GROUPB", &
2301 : description="Hydrogen atoms assigned to the GROUPA sites.", &
2302 5848 : usage="GROUPB 2 3 5 6 8 9", n_var=-1, type_of_var=integer_t)
2303 5848 : CALL section_add_keyword(section, keyword)
2304 5848 : CALL keyword_release(keyword)
2305 :
2306 : CALL keyword_create(keyword, __LOCATION__, name="NRX", &
2307 : description="Number of reactive sites at the end of GROUPA (zero to three). "// &
2308 : "Their reference coordinations are D_1 through D_3.", &
2309 5848 : usage="NRX 0", type_of_var=integer_t, default_i_val=0, n_var=1)
2310 5848 : CALL section_add_keyword(section, keyword)
2311 5848 : CALL keyword_release(keyword)
2312 :
2313 5848 : END SUBROUTINE create_voronoiipz_section
2314 :
2315 : END MODULE input_cp2k_colvar
|