46#include "./base/base_uses.f90"
51 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .false.
52 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_colvar'
68 LOGICAL,
OPTIONAL :: skip_recursive_colvar
74 IF (
PRESENT(skip_recursive_colvar)) skip = skip_recursive_colvar
75 cpassert(.NOT.
ASSOCIATED(section))
77 description=
"This section specifies the nature of the collective variables.", &
78 n_keywords=1, n_subsections=1, repeats=.true.)
79 NULLIFY (subsection, print_key)
81 CALL create_colvar_var_section(subsection=subsection, &
82 section=section, skip_recursive_colvar=skip)
85 description=
"Controls the printing of the colvar specifications", &
86 n_keywords=0, n_subsections=1, repeats=.true.)
89 description=
"Controls the printing of basic information during colvar setup.", &
96 CALL create_clv_info_section(subsection)
109 SUBROUTINE create_clv_info_section(section)
114 cpassert(.NOT.
ASSOCIATED(section))
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 n_subsections=0, repeats=.false.)
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 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
129 END SUBROUTINE create_clv_info_section
138 RECURSIVE SUBROUTINE create_colvar_var_section(subsection, section, skip_recursive_colvar)
140 LOGICAL,
INTENT(IN) :: skip_recursive_colvar
142 cpassert(.NOT.
ASSOCIATED(subsection))
143 cpassert(
ASSOCIATED(section))
145 CALL create_colvar_dist_section(subsection)
149 CALL create_colvar_angle_section(subsection)
153 CALL create_colvar_torsion_section(subsection)
157 CALL create_colvar_coord_section(subsection)
161 CALL create_colvar_pop_section(subsection)
165 CALL create_colvar_gyr_section(subsection)
169 CALL create_colvar_d_pl_section(subsection)
173 CALL create_colvar_a_pl_section(subsection)
177 CALL create_colvar_rot_section(subsection)
181 CALL create_colvar_dfunct_section(subsection)
185 CALL create_colvar_qparm_section(subsection)
189 CALL create_colvar_hydronium_shell_section(subsection)
193 CALL create_colvar_hydronium_dist_section(subsection)
197 CALL create_colvar_acid_hyd_dist_section(subsection)
201 CALL create_colvar_acid_hyd_shell_section(subsection)
205 CALL create_colvar_rmsd_section(subsection)
217 CALL create_colvar_u_section(subsection)
221 CALL create_colvar_wc_section(subsection)
225 CALL create_colvar_hbp_section(subsection)
229 CALL create_colvar_ring_puckering_section(subsection)
233 CALL create_colvar_cond_dist_section(subsection)
237 CALL create_voronoiipz_section(subsection)
241 IF (.NOT. skip_recursive_colvar)
THEN
242 CALL create_colvar_rpath_section(subsection)
246 CALL create_colvar_dpath_section(subsection)
250 CALL create_colvar_comb_section(subsection)
255 END SUBROUTINE create_colvar_var_section
262 SUBROUTINE create_colvar_coord_section(section)
268 cpassert(.NOT.
ASSOCIATED(section))
270 description=
"Section to define the coordination number as a collective variable.", &
271 n_keywords=1, n_subsections=0, repeats=.false.)
273 NULLIFY (subsection, keyword)
276 variants=[
"POINTS_FROM"], &
277 description=
"Specify indexes of atoms/points building the coordination variable. ", &
278 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
284 variants=[
"POINTS_TO"], &
285 description=
"Specify indexes of atoms/points building the coordination variable. ", &
286 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
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., &
301 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
302 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
303 n_var=-1, type_of_var=
char_t)
308 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
309 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
310 n_var=-1, type_of_var=
char_t)
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 n_var=-1, type_of_var=
char_t)
323 CALL create_point_section(subsection)
329 description=
"Specify the R0 parameter in the coordination function.", &
330 usage=
"R0 {real}", default_r_val=3.0_dp, &
331 unit_str=
"bohr", n_var=1)
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, &
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, &
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 unit_str=
"bohr", n_var=1)
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, &
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, &
382 END SUBROUTINE create_colvar_coord_section
388 SUBROUTINE create_colvar_cond_dist_section(section)
394 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 n_keywords=1, n_subsections=0, repeats=.false.)
399 NULLIFY (subsection, keyword)
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., &
409 variants=[
"POINTS_FROM"], &
410 description=
"Specify indexes of atoms/points building the coordination variable. ", &
411 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
417 variants=[
"POINTS_TO"], &
418 description=
"Specify indexes of atoms/points building the coordination variable. ", &
419 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
425 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
426 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
427 n_var=-1, type_of_var=
char_t)
432 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
433 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
434 n_var=-1, type_of_var=
char_t)
439 CALL create_point_section(subsection)
445 description=
"Specify the R0 parameter in the coordination function.", &
446 usage=
"R0 {real}", default_r_val=3.0_dp, &
447 unit_str=
"bohr", n_var=1)
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, &
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, &
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 unit_str=
"bohr", n_var=1)
476 END SUBROUTINE create_colvar_cond_dist_section
484 SUBROUTINE create_colvar_pop_section(section)
490 cpassert(.NOT.
ASSOCIATED(section))
492 description=
"Section to define the population of specie as a collective variable. "// &
493 "See also <https://doi.org/10.1021/jp3019588>.", &
494 n_keywords=1, n_subsections=0, repeats=.false.)
496 NULLIFY (subsection, keyword)
499 variants=[
"POINTS_FROM"], &
500 description=
"Specify indexes of atoms/points building the coordination variable. ", &
501 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
507 variants=[
"POINTS_TO"], &
508 description=
"Specify indexes of atoms/points building the coordination variable. ", &
509 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
515 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
516 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
517 n_var=-1, type_of_var=
char_t)
522 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
523 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
524 n_var=-1, type_of_var=
char_t)
529 CALL create_point_section(subsection)
535 description=
"Specify the R0 parameter in the coordination function.", &
536 usage=
"R0 {real}", default_r_val=3.0_dp, &
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, &
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, &
561 description=
"Specify the n0 parameter that sets the coordination of the species.", &
562 usage=
"n0 {integer}", default_i_val=4, &
568 description=
"Specify the gaussian width of used to build the population istogram.", &
569 usage=
"SIGMA {real}", default_r_val=0.5_dp, &
574 END SUBROUTINE create_colvar_pop_section
580 SUBROUTINE create_colvar_gyr_section(section)
586 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 n_keywords=1, n_subsections=0, repeats=.false.)
591 NULLIFY (subsection, keyword)
594 variants=[
"POINTS"], &
595 description=
"Specify indexes of atoms/points defyining the gyration radius variable. ", &
596 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
602 description=
"Specify alternatively kinds of atoms defining the gyration radius.", &
603 usage=
"KINDS {CHAR} {CHAR} ..", repeats=.true., &
604 n_var=-1, type_of_var=
char_t)
609 CALL create_point_section(subsection)
613 END SUBROUTINE create_colvar_gyr_section
620 SUBROUTINE create_colvar_dfunct_section(section)
626 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 n_keywords=1, n_subsections=0, repeats=.false.)
632 NULLIFY (keyword, subsection)
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}", &
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}", &
651 description=
"Whether periodic boundary conditions should be applied on the "// &
652 "atomic position before computing the colvar or not.", &
654 default_l_val=.true., lone_keyword_l_val=.true.)
659 CALL create_point_section(subsection)
663 END SUBROUTINE create_colvar_dfunct_section
670 SUBROUTINE create_colvar_torsion_section(section)
676 cpassert(.NOT.
ASSOCIATED(section))
678 description=
"Section to define the torsion as a collective variables.", &
679 n_keywords=1, n_subsections=0, repeats=.false.)
681 NULLIFY (keyword, subsection)
684 variants=[
"POINTS"], &
685 description=
"Specifies the indexes of atoms/points defining the torsion.", &
686 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
692 CALL create_point_section(subsection)
696 END SUBROUTINE create_colvar_torsion_section
703 SUBROUTINE create_colvar_rot_section(section)
709 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 n_keywords=1, n_subsections=0, repeats=.false.)
715 NULLIFY (keyword, subsection)
718 description=
"Specifies the index of atom/point defining the first point"// &
719 " of the first bond/line.", &
720 usage=
"P1_BOND1 {integer}", &
726 description=
"Specifies the index of atom/point defining the second point"// &
727 " of the first bond/line.", &
728 usage=
"P2_BOND1 {integer}", &
734 description=
"Specifies the index of atom/point defining the first point"// &
735 " of the second bond/line.", &
736 usage=
"P1_BOND2 {integer}", &
742 description=
"Specifies the index of atom/point defining the second point"// &
743 " of the second bond/line.", &
744 usage=
"P2_BOND2 {integer}", &
750 CALL create_point_section(subsection)
754 END SUBROUTINE create_colvar_rot_section
761 SUBROUTINE create_colvar_angle_section(section)
767 cpassert(.NOT.
ASSOCIATED(section))
769 description=
"Section to define the angle as a collective variables.", &
770 n_keywords=1, n_subsections=0, repeats=.false.)
771 NULLIFY (keyword, subsection)
774 variants=[
"POINTS"], &
775 description=
"Specifies the indexes of atoms/points defining the angle.", &
776 usage=
"ATOMS {integer} {integer} {integer}", &
782 CALL create_point_section(subsection)
786 END SUBROUTINE create_colvar_angle_section
793 SUBROUTINE create_colvar_dist_section(section)
799 cpassert(.NOT.
ASSOCIATED(section))
801 description=
"Section to define the distance as a collective variables.", &
802 n_keywords=1, n_subsections=0, repeats=.false.)
803 NULLIFY (keyword, subsection)
806 variants=[
"POINTS"], &
807 description=
"Specifies the indexes of atoms/points defining the distance.", &
808 usage=
"ATOMS {integer} {integer}", &
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"), &
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.", &
825 default_l_val=.false., lone_keyword_l_val=.true.)
830 CALL create_point_section(subsection)
834 END SUBROUTINE create_colvar_dist_section
847 cpassert(.NOT.
ASSOCIATED(section))
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 n_keywords=1, n_subsections=0, repeats=.false.)
854 NULLIFY (keyword, subsection)
857 variants=[
"POINT"], &
858 description=
"Specifies the index of the atom/point.", &
859 usage=
"ATOM {integer}", &
865 description=
"Define the component of the position vector which will be used "// &
867 usage=
"COMPONENT (XYZ | X | Y | Z | XY| XZ | YZ)", &
868 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
875 description=
"Whether periodic boundary conditions should be applied on the "// &
876 "atomic position before computing the colvar or not.", &
878 default_l_val=.true., lone_keyword_l_val=.true.)
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 default_l_val=.false., lone_keyword_l_val=.true.)
890 CALL create_point_section(subsection)
907 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 n_keywords=1, n_subsections=0, repeats=.false.)
913 NULLIFY (keyword, subsection)
916 variants=[
"POINTS"], &
917 description=
"Specifies the index of the atoms/points A and B.", &
918 usage=
"ATOMS {integer} {integer}", &
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"), &
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"), &
944 description=
"Whether periodic boundary conditions should be applied on the "// &
945 "atomic position before computing the colvar or not.", &
947 default_l_val=.true., lone_keyword_l_val=.true.)
952 CALL create_point_section(subsection)
963 SUBROUTINE create_colvar_u_section(section)
968 cpassert(.NOT.
ASSOCIATED(section))
970 description=
"Section to define the energy as a generalized collective variable.", &
971 n_keywords=0, n_subsections=0, repeats=.false.)
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 "in the MULTIPLE_FORCE_EVALS/FORCE_EVAL_ORDER list.", do_deriv=.true.)
983 END SUBROUTINE create_colvar_u_section
991 SUBROUTINE create_colvar_d_pl_section(section)
997 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 n_keywords=1, n_subsections=0, repeats=.false.)
1002 NULLIFY (keyword, subsection)
1005 description=
"Whether periodic boundary conditions should be applied on the "// &
1006 "atomic position before computing the colvar or not.", &
1008 default_l_val=.true., lone_keyword_l_val=.true.)
1013 variants=[
"POINTS_PLANE"], &
1014 description=
"Specifies the indexes of atoms/points defining the plane.", &
1015 usage=
"ATOMS_PLANE <INTEGER> <INTEGER> <INTEGER>", &
1021 variants=[
"POINT_POINT"], &
1022 description=
"Specifies the atom/point index defining the point.", &
1023 usage=
"ATOM_POINT <INTEGER>", &
1029 CALL create_point_section(subsection)
1033 END SUBROUTINE create_colvar_d_pl_section
1041 SUBROUTINE create_colvar_a_pl_section(section)
1047 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 n_keywords=1, n_subsections=0, repeats=.false.)
1052 NULLIFY (keyword, subsection)
1055 description=
"This section defines the plane. When using this colvar, "// &
1056 "two plane section must be defined!", &
1057 n_keywords=1, n_subsections=0, repeats=.true.)
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", &
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"), &
1072 description=
"Specifies the indexes of 3 atoms/points defining the plane.", &
1073 usage=
"ATOMS <INTEGER> <INTEGER> <INTEGER>", &
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 n_var=3, type_of_var=
real_t)
1089 CALL create_point_section(subsection)
1092 END SUBROUTINE create_colvar_a_pl_section
1099 SUBROUTINE create_point_section(section)
1104 cpassert(.NOT.
ASSOCIATED(section))
1106 description=
"Enables the possibility to use geometrical centers instead of single atoms"// &
1107 " to define colvars", &
1108 n_keywords=1, n_subsections=0, repeats=.true.)
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"), &
1124 description=
"Specifies the indexes of atoms defining the geometrical center", &
1125 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
1126 n_var=-1, type_of_var=
integer_t, repeats=.true.)
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 n_var=-1, type_of_var=
real_t, repeats=.true.)
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", &
1146 END SUBROUTINE create_point_section
1153 SUBROUTINE create_colvar_qparm_section(section)
1159 cpassert(.NOT.
ASSOCIATED(section))
1161 description=
"Section to define the Q parameter (crystalline order parameter) as a collective variable.", &
1162 n_keywords=1, n_subsections=0, repeats=.false.)
1164 NULLIFY (keyword, subsection)
1167 variants=[
"POINTS_FROM"], &
1168 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1169 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
1175 variants=[
"POINTS_TO"], &
1176 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1177 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
1183 description=
"Specifies the distance cutoff for neighbors. "// &
1184 "Cutoff function is exactly zero for all neighbors beyond RCUT.", &
1185 usage=
"RCUT {real}", &
1186 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
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 default_l_val=.false., lone_keyword_l_val=.true.)
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 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
1206 description=
"Specifies the L spherical harmonics from Ylm.", &
1207 usage=
"L {integer}", &
1219 CALL create_point_section(subsection)
1223 END SUBROUTINE create_colvar_qparm_section
1230 SUBROUTINE create_colvar_hydronium_shell_section(section)
1235 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 n_keywords=1, n_subsections=0, repeats=.false.)
1247 description=
"Specifies indexes of atoms building the coordination variable."// &
1248 " Oxygens of the water molecules.", &
1249 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1255 description=
"Specifies indexes of atoms building the coordination variable."// &
1256 " Hydrogens of the water molecules.", &
1257 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1263 description=
"Specifies the rc parameter in the coordination function:"// &
1264 " number of oxygens per water oxygen.", &
1266 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1289 description=
"Specifies the rc parameter in the coordination function:"// &
1290 " number of hydrogens per water molecule.", &
1292 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1315 description=
"Specifies the NH parameter in the M function.", &
1316 usage=
"NH {real}", default_r_val=3.0_dp, &
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, &
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, &
1340 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1341 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1346 END SUBROUTINE create_colvar_hydronium_shell_section
1353 SUBROUTINE create_colvar_hydronium_dist_section(section)
1358 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 n_keywords=1, n_subsections=0, repeats=.false.)
1369 description=
"Specifies indexes of atoms building the coordination variable."// &
1370 " Oxygens of the water molecules.", &
1371 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1377 description=
"Specifies indexes of atoms building the coordination variable."// &
1378 " Hydrogens of the water molecules.", &
1379 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1385 description=
"Specifies the rc parameter in the coordination function:"// &
1386 " number of hydrogens per water molecule.", &
1388 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1409 description=
"Specifies the NH parameter in the M function.", &
1410 usage=
"NH {real}", default_r_val=2.2_dp, &
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, &
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, &
1432 description=
"Specifies the NN parameter in the F function.", &
1433 usage=
"NN {real}", default_r_val=1.5_dp, &
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, &
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, &
1455 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1456 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1461 END SUBROUTINE create_colvar_hydronium_dist_section
1470 SUBROUTINE create_colvar_acid_hyd_dist_section(section)
1475 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 n_keywords=1, n_subsections=0, repeats=.false.)
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., &
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., &
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., &
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, &
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, &
1525 description=
"Specify the rc parameter in the coordination function:"// &
1526 " number of hydrogens per water molecule.", &
1528 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1549 description=
"Specify the rc parameter in the coordination function:"// &
1550 " number of hydrogens per carboxyl group.", &
1552 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1573 description=
"Specifies the NC parameter in the cutoff function.", &
1574 usage=
"NC {real}", default_r_val=0.56_dp, &
1580 variants=[
"LAMBDA"], &
1581 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1582 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1587 END SUBROUTINE create_colvar_acid_hyd_dist_section
1596 SUBROUTINE create_colvar_acid_hyd_shell_section(section)
1601 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 n_keywords=1, n_subsections=0, repeats=.false.)
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., &
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., &
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., &
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, &
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, &
1652 description=
"Specifies the rc parameter in the coordination function:"// &
1653 " number of hydrogens per water molecule.", &
1655 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1676 description=
"Specifies the rc parameter in the coordination function:"// &
1677 " number of hydrogens per carboxyl group.", &
1679 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1700 description=
"Specifies the rc parameter in the coordination function:"// &
1701 " number of oxygens per water oxygen.", &
1703 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
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, &
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, &
1724 description=
"Specifies the NH parameter in the M function.", &
1725 usage=
"NH {real}", default_r_val=2.2_dp, &
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, &
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, &
1747 description=
"Specifies the NC parameter in the cutoff function.", &
1748 usage=
"NC {real}", default_r_val=0.9_dp, &
1754 variants=[
"LAMBDA"], &
1755 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1756 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1761 END SUBROUTINE create_colvar_acid_hyd_shell_section
1767 SUBROUTINE create_colvar_rmsd_section(section)
1771 TYPE(
section_type),
POINTER :: subsection, subsubsection
1773 cpassert(.NOT.
ASSOCIATED(section))
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 n_keywords=1, n_subsections=0, repeats=.false.)
1781 NULLIFY (keyword, subsection, subsubsection)
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"), &
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 default_l_val=.false., lone_keyword_l_val=.true.)
1801 description=
"Specify indexes of atoms building the subset. ", &
1802 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1808 description=
"Specify weights of atoms building the subset. It is used only with WEIGHT_LIST ", &
1809 usage=
"weightS {real} {real} ..", repeats=.true., &
1810 n_var=-1, type_of_var=
real_t)
1815 description=
"Specify coordinates of the frame (number of frames can be either 1 or 2)", &
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>", &
1825 CALL create_coord_section_cv(subsubsection,
"RMSD")
1832 END SUBROUTINE create_colvar_rmsd_section
1840 SUBROUTINE create_colvar_rpath_section(section)
1843 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., &
1858 CALL keywords_colvar_path(section)
1859 END SUBROUTINE create_colvar_rpath_section
1866 SUBROUTINE create_colvar_dpath_section(section)
1869 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., &
1885 CALL keywords_colvar_path(section)
1886 END SUBROUTINE create_colvar_dpath_section
1893 SUBROUTINE keywords_colvar_path(section)
1898 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1900 NULLIFY (keyword, subsection, subsubsection, print_key)
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 default_l_val=.false., lone_keyword_l_val=.true.)
1913 description=
"Whether to use RMSD instead of COLVARs.", &
1915 default_l_val=.false., lone_keyword_l_val=.true.)
1920 description=
"Define the subsytem used to compute the RMSD", &
1921 usage=
"SUBSET_TYPE ALL", &
1922 enum_c_vals=
s2a(
"ALL",
"LIST"), &
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 default_l_val=.false., lone_keyword_l_val=.true.)
1936 description=
"Specify indexes of atoms building the subset. ", &
1937 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1943 description=
"Specify coordinates of the frame", &
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>", &
1953 CALL create_coord_section_cv(subsubsection,
"RMSD")
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 n_var=1, default_lc_val=
"0", repeats=.true.)
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 n_var=1, repeats=.false.)
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 type_of_var=
real_t, default_r_val=5.0_dp)
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 type_of_var=
real_t, default_r_val=0.01_dp)
1999 description=
"The range of VARIABLE used for the parametrisation.", &
2000 usage=
"RANGE <REAL> <REAL>", &
2001 n_var=2, type_of_var=
real_t)
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.", &
2013 description=
"The range of of the grid of the COLVAR.", &
2014 usage=
"RANGE <REAL> <REAL>", &
2015 n_var=2, type_of_var=
real_t, repeats=.true.)
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 type_of_var=
real_t, default_r_val=0.01_dp)
2029 END SUBROUTINE keywords_colvar_path
2036 SUBROUTINE create_colvar_comb_section(section)
2041 cpassert(.NOT.
ASSOCIATED(section))
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.", &
2051 NULLIFY (subsection)
2056 END SUBROUTINE create_colvar_comb_section
2064 SUBROUTINE create_coord_section_cv(section, name)
2066 CHARACTER(LEN=*),
INTENT(IN) :: name
2070 cpassert(.NOT.
ASSOCIATED(section))
2072 description=
"The positions for "//trim(name)//
" used for restart", &
2073 n_keywords=1, n_subsections=0, repeats=.false.)
2076 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2077 description=
"Specify positions of the system", repeats=.true., &
2078 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
2082 END SUBROUTINE create_coord_section_cv
2089 SUBROUTINE create_colvar_wc_section(section)
2095 cpassert(.NOT.
ASSOCIATED(section))
2097 description=
"Section to define the hbond wannier centre as a collective variables.", &
2098 n_keywords=1, n_subsections=0, repeats=.false.)
2099 NULLIFY (keyword, subsection)
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 type_of_var=
real_t, repeats=.false.)
2110 variants=[
"POINTS"], &
2111 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2112 usage=
"ATOMS {integer} {integer} {integer}", &
2113 n_var=3, type_of_var=
integer_t, repeats=.true.)
2118 CALL create_point_section(subsection)
2122 END SUBROUTINE create_colvar_wc_section
2129 SUBROUTINE create_colvar_hbp_section(section)
2135 cpassert(.NOT.
ASSOCIATED(section))
2137 description=
"Section to define the hbond wannier centre as a collective variables.", &
2138 n_keywords=1, n_subsections=0, repeats=.false.)
2139 NULLIFY (keyword, subsection)
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 type_of_var=
real_t, repeats=.false.)
2150 description=
"Parameter used for shifting each term in the sum ", &
2151 usage=
"SHIFT <REAL>", default_r_val=0.5_dp, &
2152 type_of_var=
real_t, repeats=.false.)
2157 description=
"The number of points in the path", &
2158 usage=
"NPOINTS {integer}", default_i_val=-1, &
2159 n_var=1, type_of_var=
integer_t, repeats=.false.)
2164 variants=[
"POINTS"], &
2165 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2166 usage=
"ATOMS {integer} {integer} {integer}", &
2167 n_var=3, type_of_var=
integer_t, repeats=.true.)
2172 CALL create_point_section(subsection)
2176 END SUBROUTINE create_colvar_hbp_section
2184 SUBROUTINE create_colvar_ring_puckering_section(section)
2190 cpassert(.NOT.
ASSOCIATED(section))
2191 CALL section_create(section, __location__, name=
"RING_PUCKERING", &
2192 description=
"Section to define general ring puckering collective variables.", &
2193 n_keywords=1, n_subsections=0, repeats=.false.)
2195 NULLIFY (keyword, subsection)
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} ..", &
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, &
2217 CALL create_point_section(subsection)
2221 END SUBROUTINE create_colvar_ring_puckering_section
2227 SUBROUTINE create_voronoiipz_section(section)
2232 cpassert(.NOT.
ASSOCIATED(section))
2235 description=
"Absolute location of a hydronium ion along a Cartesian axis, "// &
2236 "based on continuous Voronoi weights.", &
2237 citations=[
zhang2025], n_subsections=0, repeats=.false.)
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 unit_str=
"angstrom^-1", n_var=1)
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 unit_str=
"angstrom", n_var=1)
2256 description=
"Cartesian direction used for the ion location: 1=X, 2=Y, 3=Z.", &
2257 usage=
"ZIDX 3", type_of_var=
integer_t, default_i_val=3, n_var=1)
2262 description=
"Reference coordination of the non-reactive GROUPA atoms.", &
2263 usage=
"D_0 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2268 description=
"Reference coordination of the first reactive GROUPA atom.", &
2269 usage=
"D_1 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2274 description=
"Reference coordination of the second reactive GROUPA atom.", &
2275 usage=
"D_2 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2280 description=
"Reference coordination of the third reactive GROUPA atom.", &
2281 usage=
"D_3 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2286 description=
"Maximum GROUPA-GROUPB distance included in the Voronoi weights.", &
2287 usage=
"NL_CUTOFF [angstrom] 2.4", &
2289 unit_str=
"angstrom", n_var=1)
2294 description=
"Oxygen atoms used as Voronoi sites. Any reactive sites must "// &
2295 "be the final NRX entries.", &
2296 usage=
"GROUPA 1 4 7", n_var=-1, type_of_var=
integer_t)
2301 description=
"Hydrogen atoms assigned to the GROUPA sites.", &
2302 usage=
"GROUPB 2 3 5 6 8 9", n_var=-1, type_of_var=
integer_t)
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 usage=
"NRX 0", type_of_var=
integer_t, default_i_val=0, n_var=1)
2313 END SUBROUTINE create_voronoiipz_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public branduardi2007
integer, save, public zhang2025
Initialize the collective variables types.
integer, parameter, public do_clv_geo_center
integer, parameter, public do_clv_xyz
integer, parameter, public do_clv_xz
integer, parameter, public do_clv_fix_point
integer, parameter, public do_clv_z
integer, parameter, public plane_def_atoms
integer, parameter, public do_clv_yz
integer, parameter, public do_clv_xy
integer, parameter, public do_clv_y
integer, parameter, public plane_def_vec
integer, parameter, public do_clv_x
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str, do_backup)
creates a print_key section
integer, parameter, public low_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
This public domain function parser module is intended for applications where a set of mathematical ex...
character(len=:) function, allocatable, public docf()
...
Defines the basic variable types.
integer, parameter, public dp
Utilities for string manipulations.
character(len=1), parameter, public newline