44#include "./base/base_uses.f90"
49 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .false.
50 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_colvar'
66 LOGICAL,
OPTIONAL :: skip_recursive_colvar
72 IF (
PRESENT(skip_recursive_colvar)) skip = skip_recursive_colvar
73 cpassert(.NOT.
ASSOCIATED(section))
75 description=
"This section specifies the nature of the collective variables.", &
76 n_keywords=1, n_subsections=1, repeats=.true.)
77 NULLIFY (subsection, print_key)
79 CALL create_colvar_var_section(subsection=subsection, &
80 section=section, skip_recursive_colvar=skip)
83 description=
"Controls the printing of the colvar specifications", &
84 n_keywords=0, n_subsections=1, repeats=.true.)
87 description=
"Controls the printing of basic information during colvar setup.", &
94 CALL create_clv_info_section(subsection)
107 SUBROUTINE create_clv_info_section(section)
112 cpassert(.NOT.
ASSOCIATED(section))
114 CALL section_create(section, __location__, name=
"COLVAR_FUNC_INFO", &
115 description=
"Specify further data possibly used by colvars, depending "// &
116 "on the starting geometry, for computing the functions value.", &
117 n_subsections=0, repeats=.false.)
119 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
120 description=
"Colvar function data."// &
121 " The order is an internal order. So if you decide to edit/modify/add these values by hand"// &
122 " you should know very well what you are doing.!", repeats=.true., &
123 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
127 END SUBROUTINE create_clv_info_section
136 RECURSIVE SUBROUTINE create_colvar_var_section(subsection, section, skip_recursive_colvar)
138 LOGICAL,
INTENT(IN) :: skip_recursive_colvar
140 cpassert(.NOT.
ASSOCIATED(subsection))
141 cpassert(
ASSOCIATED(section))
143 CALL create_colvar_dist_section(subsection)
147 CALL create_colvar_angle_section(subsection)
151 CALL create_colvar_torsion_section(subsection)
155 CALL create_colvar_coord_section(subsection)
159 CALL create_colvar_pop_section(subsection)
163 CALL create_colvar_gyr_section(subsection)
167 CALL create_colvar_d_pl_section(subsection)
171 CALL create_colvar_a_pl_section(subsection)
175 CALL create_colvar_rot_section(subsection)
179 CALL create_colvar_dfunct_section(subsection)
183 CALL create_colvar_qparm_section(subsection)
187 CALL create_colvar_hydronium_shell_section(subsection)
191 CALL create_colvar_hydronium_dist_section(subsection)
195 CALL create_colvar_acid_hyd_dist_section(subsection)
199 CALL create_colvar_acid_hyd_shell_section(subsection)
203 CALL create_colvar_rmsd_section(subsection)
215 CALL create_colvar_u_section(subsection)
219 CALL create_colvar_wc_section(subsection)
223 CALL create_colvar_hbp_section(subsection)
227 CALL create_colvar_ring_puckering_section(subsection)
231 CALL create_colvar_cond_dist_section(subsection)
235 CALL create_voronoiipz_section(subsection)
239 IF (.NOT. skip_recursive_colvar)
THEN
240 CALL create_colvar_rpath_section(subsection)
244 CALL create_colvar_dpath_section(subsection)
248 CALL create_colvar_comb_section(subsection)
253 END SUBROUTINE create_colvar_var_section
260 SUBROUTINE create_colvar_coord_section(section)
266 cpassert(.NOT.
ASSOCIATED(section))
268 description=
"Section to define the coordination number as a collective variable.", &
269 n_keywords=1, n_subsections=0, repeats=.false.)
271 NULLIFY (subsection, keyword)
274 variants=[
"POINTS_FROM"], &
275 description=
"Specify indexes of atoms/points building the coordination variable. ", &
276 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
282 variants=[
"POINTS_TO"], &
283 description=
"Specify indexes of atoms/points building the coordination variable. ", &
284 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
290 variants=[
"POINTS_TO_B"], &
291 description=
"For the CV given by the multiplication of two coorination numbers,"// &
292 " here specify indexes of the third set of atoms/points. ", &
293 usage=
"ATOMS_TO_B {integer} {integer} ..", repeats=.true., &
299 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
300 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
301 n_var=-1, type_of_var=
char_t)
306 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
307 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
308 n_var=-1, type_of_var=
char_t)
313 description=
"For the CV given by the multiplication of two coorination numbers,"// &
314 " here specify alternatively kinds of atoms building the coordination variable.", &
315 usage=
"KINDS_TO_B {CHAR} {CHAR} ..", repeats=.true., &
316 n_var=-1, type_of_var=
char_t)
321 CALL create_point_section(subsection)
327 description=
"Specify the R0 parameter in the coordination function.", &
328 usage=
"R0 {real}", default_r_val=3.0_dp, &
329 unit_str=
"bohr", n_var=1)
334 variants=[
"EXPON_NUMERATOR"], &
335 description=
"Sets the value of the numerator of the exponential factor"// &
336 " in the coordination FUNCTION.", &
337 usage=
"NN {integer}", default_i_val=6, &
343 variants=[
"EXPON_DENOMINATOR"], &
344 description=
"Sets the value of the denominator of the exponential factor"// &
345 " in the coordination FUNCTION.", &
346 usage=
"ND {integer}", default_i_val=12, &
352 variants=[
"R_0_B"], &
353 description=
"For the CV given by the multiplication of two coorination numbers,"// &
354 " specify the R0 parameter in the second coordination function.", &
355 usage=
"R0_B {real}", default_r_val=3.0_dp, &
356 unit_str=
"bohr", n_var=1)
361 variants=[
"EXPON_NUMERATOR_B"], &
362 description=
"For the CV given by the multiplication of two coorination numbers,"// &
363 " Sets the value of the numerator of the exponential factor"// &
364 " in the coordination FUNCTION.", &
365 usage=
"NN_B {integer}", default_i_val=6, &
371 variants=[
"EXPON_DENOMINATOR_B"], &
372 description=
"For the CV given by the multiplication of two coorination numbers,"// &
373 " Sets the value of the denominator of the exponential factor"// &
374 " in the coordination FUNCTION.", &
375 usage=
"ND_B {integer}", default_i_val=12, &
380 END SUBROUTINE create_colvar_coord_section
386 SUBROUTINE create_colvar_cond_dist_section(section)
392 cpassert(.NOT.
ASSOCIATED(section))
393 CALL section_create(section, __location__, name=
"CONDITIONED_DISTANCE", &
394 description=
"Section to define the conditioned distance as a collective variable.", &
395 n_keywords=1, n_subsections=0, repeats=.false.)
397 NULLIFY (subsection, keyword)
399 CALL keyword_create(keyword, __location__, name=
"ATOMS_DISTANCE", &
400 description=
"Specify indexes of atoms/points from which the distance is computed. ", &
401 usage=
"ATOMS_DISTANCE {integer} {integer} ..", repeats=.true., &
407 variants=[
"POINTS_FROM"], &
408 description=
"Specify indexes of atoms/points building the coordination variable. ", &
409 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
415 variants=[
"POINTS_TO"], &
416 description=
"Specify indexes of atoms/points building the coordination variable. ", &
417 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
423 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
424 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
425 n_var=-1, type_of_var=
char_t)
430 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
431 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
432 n_var=-1, type_of_var=
char_t)
437 CALL create_point_section(subsection)
443 description=
"Specify the R0 parameter in the coordination function.", &
444 usage=
"R0 {real}", default_r_val=3.0_dp, &
445 unit_str=
"bohr", n_var=1)
450 variants=[
"EXPON_NUMERATOR"], &
451 description=
"Sets the value of the numerator of the exponential factor"// &
452 " in the coordination FUNCTION.", &
453 usage=
"NN {integer}", default_i_val=6, &
459 variants=[
"EXPON_DENOMINATOR"], &
460 description=
"Sets the value of the denominator of the exponential factor"// &
461 " in the coordination FUNCTION.", &
462 usage=
"ND {integer}", default_i_val=12, &
468 description=
"Specify the lambda parameter at the exponent of the conditioned distance function.", &
469 usage=
"LAMBDA {real}", default_r_val=3.0_dp, &
470 unit_str=
"bohr", n_var=1)
474 END SUBROUTINE create_colvar_cond_dist_section
482 SUBROUTINE create_colvar_pop_section(section)
488 cpassert(.NOT.
ASSOCIATED(section))
490 description=
"Section to define the population of specie as a collective variable. "// &
491 "See also <https://doi.org/10.1021/jp3019588>.", &
492 n_keywords=1, n_subsections=0, repeats=.false.)
494 NULLIFY (subsection, keyword)
497 variants=[
"POINTS_FROM"], &
498 description=
"Specify indexes of atoms/points building the coordination variable. ", &
499 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
505 variants=[
"POINTS_TO"], &
506 description=
"Specify indexes of atoms/points building the coordination variable. ", &
507 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
513 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
514 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
515 n_var=-1, type_of_var=
char_t)
520 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
521 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
522 n_var=-1, type_of_var=
char_t)
527 CALL create_point_section(subsection)
533 description=
"Specify the R0 parameter in the coordination function.", &
534 usage=
"R0 {real}", default_r_val=3.0_dp, &
540 variants=[
"EXPON_NUMERATOR"], &
541 description=
"Sets the value of the numerator of the exponential factor"// &
542 " in the coordination FUNCTION.", &
543 usage=
"NN {integer}", default_i_val=6, &
549 variants=[
"EXPON_DENOMINATOR"], &
550 description=
"Sets the value of the denominator of the exponential factor"// &
551 " in the coordination FUNCTION.", &
552 usage=
"ND {integer}", default_i_val=12, &
559 description=
"Specify the n0 parameter that sets the coordination of the species.", &
560 usage=
"n0 {integer}", default_i_val=4, &
566 description=
"Specify the gaussian width of used to build the population istogram.", &
567 usage=
"SIGMA {real}", default_r_val=0.5_dp, &
572 END SUBROUTINE create_colvar_pop_section
578 SUBROUTINE create_colvar_gyr_section(section)
584 cpassert(.NOT.
ASSOCIATED(section))
585 CALL section_create(section, __location__, name=
"GYRATION_RADIUS", &
586 description=
"Section to define the gyration radius as a collective variable.", &
587 n_keywords=1, n_subsections=0, repeats=.false.)
589 NULLIFY (subsection, keyword)
592 variants=[
"POINTS"], &
593 description=
"Specify indexes of atoms/points defyining the gyration radius variable. ", &
594 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
600 description=
"Specify alternatively kinds of atoms defining the gyration radius.", &
601 usage=
"KINDS {CHAR} {CHAR} ..", repeats=.true., &
602 n_var=-1, type_of_var=
char_t)
607 CALL create_point_section(subsection)
611 END SUBROUTINE create_colvar_gyr_section
618 SUBROUTINE create_colvar_dfunct_section(section)
624 cpassert(.NOT.
ASSOCIATED(section))
625 CALL section_create(section, __location__, name=
"DISTANCE_FUNCTION", &
626 description=
"Section to define functions between two distances as collective variables."// &
627 " The function is defined as d1+coeff*d2", &
628 n_keywords=1, n_subsections=0, repeats=.false.)
630 NULLIFY (keyword, subsection)
633 variants=[
"POINTS"], &
634 description=
"Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4).", &
635 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
641 description=
"Specifies the coefficient in the function for the constraint."// &
642 " -1.0 has to be used for distance difference, 1.0 for distance addition", &
643 usage=
"COEFFICIENT {real}", &
649 description=
"Whether periodic boundary conditions should be applied on the "// &
650 "atomic position before computing the colvar or not.", &
652 default_l_val=.true., lone_keyword_l_val=.true.)
657 CALL create_point_section(subsection)
661 END SUBROUTINE create_colvar_dfunct_section
668 SUBROUTINE create_colvar_torsion_section(section)
674 cpassert(.NOT.
ASSOCIATED(section))
676 description=
"Section to define the torsion as a collective variables.", &
677 n_keywords=1, n_subsections=0, repeats=.false.)
679 NULLIFY (keyword, subsection)
682 variants=[
"POINTS"], &
683 description=
"Specifies the indexes of atoms/points defining the torsion.", &
684 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
690 CALL create_point_section(subsection)
694 END SUBROUTINE create_colvar_torsion_section
701 SUBROUTINE create_colvar_rot_section(section)
707 cpassert(.NOT.
ASSOCIATED(section))
708 CALL section_create(section, __location__, name=
"bond_rotation", &
709 description=
"Section to define the rotation of a bond/line with respect to"// &
710 " another bond/line", &
711 n_keywords=1, n_subsections=0, repeats=.false.)
713 NULLIFY (keyword, subsection)
716 description=
"Specifies the index of atom/point defining the first point"// &
717 " of the first bond/line.", &
718 usage=
"P1_BOND1 {integer}", &
724 description=
"Specifies the index of atom/point defining the second point"// &
725 " of the first bond/line.", &
726 usage=
"P2_BOND1 {integer}", &
732 description=
"Specifies the index of atom/point defining the first point"// &
733 " of the second bond/line.", &
734 usage=
"P1_BOND2 {integer}", &
740 description=
"Specifies the index of atom/point defining the second point"// &
741 " of the second bond/line.", &
742 usage=
"P2_BOND2 {integer}", &
748 CALL create_point_section(subsection)
752 END SUBROUTINE create_colvar_rot_section
759 SUBROUTINE create_colvar_angle_section(section)
765 cpassert(.NOT.
ASSOCIATED(section))
767 description=
"Section to define the angle as a collective variables.", &
768 n_keywords=1, n_subsections=0, repeats=.false.)
769 NULLIFY (keyword, subsection)
772 variants=[
"POINTS"], &
773 description=
"Specifies the indexes of atoms/points defining the angle.", &
774 usage=
"ATOMS {integer} {integer} {integer}", &
780 CALL create_point_section(subsection)
784 END SUBROUTINE create_colvar_angle_section
791 SUBROUTINE create_colvar_dist_section(section)
797 cpassert(.NOT.
ASSOCIATED(section))
799 description=
"Section to define the distance as a collective variables.", &
800 n_keywords=1, n_subsections=0, repeats=.false.)
801 NULLIFY (keyword, subsection)
804 variants=[
"POINTS"], &
805 description=
"Specifies the indexes of atoms/points defining the distance.", &
806 usage=
"ATOMS {integer} {integer}", &
811 description=
"Define the axes along which the colvar should be evaluated", &
812 usage=
"AXIS (XYZ | X | Y | Z | XY| XZ | YZ)", &
813 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
820 description=
"Whether the distance along one Cartesian axis has to be considered with sign."// &
821 " This option is valid if only one dimension is selected.", &
823 default_l_val=.false., lone_keyword_l_val=.true.)
828 CALL create_point_section(subsection)
832 END SUBROUTINE create_colvar_dist_section
845 cpassert(.NOT.
ASSOCIATED(section))
847 description=
"Section to define the distance of an atom from its starting "// &
848 "position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable. "// &
849 "If absolute_position is specified, instead the CV is represented by the "// &
850 "instantaneous position of the atom (only available for X, Y or Z components).", &
851 n_keywords=1, n_subsections=0, repeats=.false.)
852 NULLIFY (keyword, subsection)
855 variants=[
"POINT"], &
856 description=
"Specifies the index of the atom/point.", &
857 usage=
"ATOM {integer}", &
863 description=
"Define the component of the position vector which will be used "// &
865 usage=
"COMPONENT (XYZ | X | Y | Z | XY| XZ | YZ)", &
866 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
873 description=
"Whether periodic boundary conditions should be applied on the "// &
874 "atomic position before computing the colvar or not.", &
876 default_l_val=.true., lone_keyword_l_val=.true.)
880 CALL keyword_create(keyword, __location__, name=
"ABSOLUTE_POSITION", &
881 description=
"If enabled, the absolute position of the atoms will be used. ", &
882 usage=
"ABSOLUTE_POSITION", &
883 default_l_val=.false., lone_keyword_l_val=.true.)
888 CALL create_point_section(subsection)
905 cpassert(.NOT.
ASSOCIATED(section))
906 CALL section_create(section, __location__, name=
"XYZ_OUTERDIAG", &
907 description=
"Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0))"// &
908 " or part of its components as a collective variable. The final term is given by the product"// &
909 " of the components of A with the components of B.", &
910 n_keywords=1, n_subsections=0, repeats=.false.)
911 NULLIFY (keyword, subsection)
914 variants=[
"POINTS"], &
915 description=
"Specifies the index of the atoms/points A and B.", &
916 usage=
"ATOMS {integer} {integer}", &
922 description=
"Define the component of the position vector which will be used "// &
923 "as a colvar for atom A.", &
924 usage=
"COMPONENT_A (XYZ | X | Y | Z | XY| XZ | YZ)", &
925 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
932 description=
"Define the component of the position vector which will be used "// &
933 "as a colvar for atom B.", &
934 usage=
"COMPONENT_B (XYZ | X | Y | Z | XY| XZ | YZ)", &
935 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
942 description=
"Whether periodic boundary conditions should be applied on the "// &
943 "atomic position before computing the colvar or not.", &
945 default_l_val=.true., lone_keyword_l_val=.true.)
950 CALL create_point_section(subsection)
961 SUBROUTINE create_colvar_u_section(section)
967 cpassert(.NOT.
ASSOCIATED(section))
969 description=
"Section to define the energy as a generalized collective variable.", &
970 n_keywords=0, n_subsections=0, repeats=.false.)
972 NULLIFY (subsection, keyword)
974 description=
"This section allows to use any function of the energy subsystems"// &
975 " in a mixed_env calculation as a collective variable.", &
976 n_keywords=1, n_subsections=0, repeats=.false.)
978 CALL keyword_create(keyword, __location__, name=
"ENERGY_FUNCTION", &
979 description=
"Specifies the functional form of the collective variable in mathematical notation.", &
980 usage=
"ENERGY_FUNCTION (E1+E2-LOG(E1/E2))", type_of_var=
lchar_t, &
986 description=
"Defines the variables of the functional form. To allow an efficient"// &
987 " mapping the order of the energy variables will be considered identical to the"// &
988 " order of the force_eval in the force_eval_order list.", &
989 usage=
"VARIABLES x", type_of_var=
char_t, &
995 description=
"Defines the parameters of the functional form", &
996 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
997 n_var=-1, repeats=.true.)
1002 description=
"Defines the values of parameter of the functional form", &
1003 usage=
"VALUES ", type_of_var=
real_t, &
1004 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
1009 description=
"Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1010 "It is assumed that the corresponding parameter value is specified in this unit.", &
1011 usage=
"UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=
char_t, &
1012 n_var=-1, repeats=.true.)
1017 description=
"Parameter used for computing the derivative with the Ridders' method.", &
1018 usage=
"DX <REAL>", default_r_val=0.1_dp, unit_str=
"bohr")
1023 description=
"Checks that the error in computing the derivative is not larger than "// &
1024 "the value set; in case error is larger a warning message is printed.", &
1025 usage=
"ERROR_LIMIT <REAL>", default_r_val=1.0e-12_dp)
1032 END SUBROUTINE create_colvar_u_section
1040 SUBROUTINE create_colvar_d_pl_section(section)
1046 cpassert(.NOT.
ASSOCIATED(section))
1047 CALL section_create(section, __location__, name=
"distance_point_plane", &
1048 description=
"Section to define the distance of a point from a plane "// &
1049 "as a collective variables.", &
1050 n_keywords=1, n_subsections=0, repeats=.false.)
1051 NULLIFY (keyword, subsection)
1054 description=
"Whether periodic boundary conditions should be applied on the "// &
1055 "atomic position before computing the colvar or not.", &
1057 default_l_val=.true., lone_keyword_l_val=.true.)
1062 variants=[
"POINTS_PLANE"], &
1063 description=
"Specifies the indexes of atoms/points defining the plane.", &
1064 usage=
"ATOMS_PLANE <INTEGER> <INTEGER> <INTEGER>", &
1070 variants=[
"POINT_POINT"], &
1071 description=
"Specifies the atom/point index defining the point.", &
1072 usage=
"ATOM_POINT <INTEGER>", &
1078 CALL create_point_section(subsection)
1082 END SUBROUTINE create_colvar_d_pl_section
1090 SUBROUTINE create_colvar_a_pl_section(section)
1096 cpassert(.NOT.
ASSOCIATED(section))
1097 CALL section_create(section, __location__, name=
"angle_plane_plane", &
1098 description=
"This section defines the angle between two planes "// &
1099 "as a collective variables.", &
1100 n_keywords=1, n_subsections=0, repeats=.false.)
1101 NULLIFY (keyword, subsection)
1104 description=
"This section defines the plane. When using this colvar, "// &
1105 "two plane section must be defined!", &
1106 n_keywords=1, n_subsections=0, repeats=.true.)
1109 description=
"Specify how the plane is defined: either by 3 atoms or by a fixed normal "// &
1110 "vector. At least one plane must be defined through atoms.", &
1111 usage=
"DEF_TYPE ATOMS", &
1113 enum_c_vals=
s2a(
"ATOMS",
"VECTOR"), &
1114 enum_desc=
s2a(
"Plane defined by the position of 3 atoms", &
1115 "Plane defined by a fixed normal vector"), &
1121 description=
"Specifies the indexes of 3 atoms/points defining the plane.", &
1122 usage=
"ATOMS <INTEGER> <INTEGER> <INTEGER>", &
1127 CALL keyword_create(keyword, __location__, name=
"NORMAL_VECTOR", &
1128 description=
"Alternatively to 3 atoms/points one can define one of the two, "// &
1129 "planes by defining its NORMAL vector.", &
1130 usage=
"NORMAL_VECTOR 0.0 1.0 0.0", &
1131 n_var=3, type_of_var=
real_t)
1138 CALL create_point_section(subsection)
1141 END SUBROUTINE create_colvar_a_pl_section
1148 SUBROUTINE create_point_section(section)
1153 cpassert(.NOT.
ASSOCIATED(section))
1155 description=
"Enables the possibility to use geometrical centers instead of single atoms"// &
1156 " to define colvars", &
1157 n_keywords=1, n_subsections=0, repeats=.true.)
1162 description=
"Chooses the type of geometrical point", &
1163 usage=
"type (GEO_CENTER|FIX_POINT)", &
1164 enum_c_vals=
s2a(
"GEO_CENTER",
"FIX_POINT"), &
1165 enum_desc=
s2a(
"Computes the geometrical center of the listed atoms", &
1166 "Defines a fixed point in space"), &
1173 description=
"Specifies the indexes of atoms defining the geometrical center", &
1174 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
1175 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1180 keyword, __location__, name=
"WEIGHTS", &
1181 description=
"Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom", &
1182 usage=
"WEIGHTS {real} {real} {real} {real}", &
1183 n_var=-1, type_of_var=
real_t, repeats=.true.)
1188 description=
"Specifies the xyz of the fixed point (if the case)", &
1189 usage=
"XYZ {real} {real} {real}", &
1190 n_var=3, type_of_var=
real_t, unit_str=
"bohr", &
1195 END SUBROUTINE create_point_section
1202 SUBROUTINE create_colvar_qparm_section(section)
1208 cpassert(.NOT.
ASSOCIATED(section))
1210 description=
"Section to define the Q parameter (crystalline order parameter) as a collective variable.", &
1211 n_keywords=1, n_subsections=0, repeats=.false.)
1213 NULLIFY (keyword, subsection)
1216 variants=[
"POINTS_FROM"], &
1217 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1218 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
1224 variants=[
"POINTS_TO"], &
1225 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1226 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
1232 description=
"Specifies the distance cutoff for neighbors. "// &
1233 "Cutoff function is exactly zero for all neighbors beyond RCUT.", &
1234 usage=
"RCUT {real}", &
1235 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
1239 CALL keyword_create(keyword, __location__, name=
"INCLUDE_IMAGES", &
1240 description=
"Whether to include periodic images of ATOMS_TO into the neighbor list.", &
1241 usage=
"INCLUDE_IMAGES", &
1242 default_l_val=.false., lone_keyword_l_val=.true.)
1247 description=
"Specifies the distance cutoff for neighbors. "// &
1248 "Cutoff function is exactly 1 for all neighbors closer than RSTART.", &
1249 usage=
"RSTART {real}", &
1250 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
1255 description=
"Specifies the L spherical harmonics from Ylm.", &
1256 usage=
"L {integer}", &
1268 CALL create_point_section(subsection)
1272 END SUBROUTINE create_colvar_qparm_section
1279 SUBROUTINE create_colvar_hydronium_shell_section(section)
1284 cpassert(.NOT.
ASSOCIATED(section))
1285 CALL section_create(section, __location__, name=
"HYDRONIUM_SHELL", &
1286 description=
"Section to define the formation of a hydronium as a"// &
1287 " collective variable. Number of oxygens in the 1st shell of the"// &
1288 " hydronium. Adapted from Equation (3) in Supplementary Info of"// &
1289 " J. Am. Chem. Soc.,128, 2006, 11318, i.e. omitting the cutoff function"// &
1290 " and summing only over the oxygens of water.", &
1291 n_keywords=1, n_subsections=0, repeats=.false.)
1296 description=
"Specifies indexes of atoms building the coordination variable."// &
1297 " Oxygens of the water molecules.", &
1298 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1304 description=
"Specifies indexes of atoms building the coordination variable."// &
1305 " Hydrogens of the water molecules.", &
1306 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1312 description=
"Specifies the rc parameter in the coordination function:"// &
1313 " number of oxygens per water oxygen.", &
1315 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1320 variants=[
"EXPON_NUMERATORA"], &
1321 description=
"Sets the value of the numerator of the exponential factor"// &
1322 " in the coordination function: number of oxygens per water oxygen.", &
1323 usage=
"pOO {integer}", default_i_val=6, &
1329 variants=[
"EXPON_DENOMINATORA"], &
1330 description=
"Sets the value of the denominator of the exponential factor"// &
1331 " in the coordination function: number of oxygens per water oxygen.", &
1332 usage=
"qOO {integer}", default_i_val=12, &
1338 description=
"Specifies the rc parameter in the coordination function:"// &
1339 " number of hydrogens per water molecule.", &
1341 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1346 variants=[
"EXPON_NUMERATORB"], &
1347 description=
"Sets the value of the numerator of the exponential factor"// &
1348 " in the coordination function: number of hydrogens per water molecule.", &
1349 usage=
"pOH {integer}", default_i_val=6, &
1355 variants=[
"EXPON_DENOMINATORB"], &
1356 description=
"Sets the value of the denominator of the exponential factor"// &
1357 " in the coordination function: number of hydrogens per water molecule.", &
1358 usage=
"qOH {integer}", default_i_val=12, &
1364 description=
"Specifies the NH parameter in the M function.", &
1365 usage=
"NH {real}", default_r_val=3.0_dp, &
1371 variants=[
"EXPON_NUMERATOR"], &
1372 description=
"Sets the value of the numerator of the exponential factor"// &
1373 " in the M function.", &
1374 usage=
"pM {integer}", default_i_val=8, &
1380 variants=[
"EXPON_DENOMINATOR"], &
1381 description=
"Sets the value of the denominator of the exponential factor"// &
1382 " in the M function.", &
1383 usage=
"qM {integer}", default_i_val=16, &
1389 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1390 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1395 END SUBROUTINE create_colvar_hydronium_shell_section
1402 SUBROUTINE create_colvar_hydronium_dist_section(section)
1407 cpassert(.NOT.
ASSOCIATED(section))
1408 CALL section_create(section, __location__, name=
"HYDRONIUM_DISTANCE", &
1409 description=
"Section to define the formation of a hydronium as a"// &
1410 " collective variable. Distance between hydronium and hydroxide ion"// &
1411 " Experimental at this point, i.e. not proved to be an effective"// &
1412 " collective variable.", &
1413 n_keywords=1, n_subsections=0, repeats=.false.)
1418 description=
"Specifies indexes of atoms building the coordination variable."// &
1419 " Oxygens of the water molecules.", &
1420 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1426 description=
"Specifies indexes of atoms building the coordination variable."// &
1427 " Hydrogens of the water molecules.", &
1428 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1434 description=
"Specifies the rc parameter in the coordination function:"// &
1435 " number of hydrogens per water molecule.", &
1437 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1442 description=
"Sets the value of the numerator of the exponential factor"// &
1443 " in the coordination function: number of hydrogens per water molecule.", &
1444 usage=
"pOH {integer}", default_i_val=6, &
1450 description=
"Sets the value of the denominator of the exponential factor"// &
1451 " in the coordination function: number of hydrogens per water molecule.", &
1452 usage=
"qOH {integer}", default_i_val=12, &
1458 description=
"Specifies the NH parameter in the M function.", &
1459 usage=
"NH {real}", default_r_val=2.2_dp, &
1465 description=
"Sets the value of the numerator of the exponential factor"// &
1466 " in the M function.", &
1467 usage=
"pM {integer}", default_i_val=8, &
1473 description=
"Sets the value of the denominator of the exponential factor"// &
1474 " in the M function.", &
1475 usage=
"qM {integer}", default_i_val=16, &
1481 description=
"Specifies the NN parameter in the F function.", &
1482 usage=
"NN {real}", default_r_val=1.5_dp, &
1488 description=
"Sets the value of the numerator of the exponential factor"// &
1489 " in the F function.", &
1490 usage=
"pF {integer}", default_i_val=8, &
1496 description=
"Sets the value of the denominator of the exponential factor"// &
1497 " in the F function.", &
1498 usage=
"qF {integer}", default_i_val=16, &
1504 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1505 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1510 END SUBROUTINE create_colvar_hydronium_dist_section
1519 SUBROUTINE create_colvar_acid_hyd_dist_section(section)
1524 cpassert(.NOT.
ASSOCIATED(section))
1525 CALL section_create(section, __location__, name=
"ACID_HYDRONIUM_DISTANCE", &
1526 description=
"Section to define the dissociation of a carboxylic acid in"// &
1527 " water. Distance between hydronium ion and acetate ion. Equation (2)"// &
1528 " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318.", &
1529 n_keywords=1, n_subsections=0, repeats=.false.)
1533 CALL keyword_create(keyword, __location__, name=
"OXYGENS_WATER", &
1534 description=
"Specifies indexes of atoms building the coordination variable."// &
1535 " Oxygens of the water molecules. ", &
1536 usage=
"OXYGENS_WATER {integer} {integer} ..", repeats=.true., &
1541 CALL keyword_create(keyword, __location__, name=
"OXYGENS_ACID", &
1542 description=
"Specifies indexes of atoms building the coordination variable."// &
1543 " Oxygens of the carboxyl groups.", &
1544 usage=
"OXYGENS_ACID {integer} {integer} ..", repeats=.true., &
1550 description=
"Specifies indexes of atoms building the coordination variable."// &
1551 " Hydrogens of the water molecules and of the carboxyl groups.", &
1552 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1558 description=
"Sets the value of the numerator of the exponential factor"// &
1559 " in the coordination function: number of hydrogens per water molecule.", &
1560 usage=
"pWOH {integer}", default_i_val=8, &
1566 description=
"Sets the value of the denominator of the exponential factor"// &
1567 " in the coordination function: number of hydrogens per water molecule.", &
1568 usage=
"qWOH {integer}", default_i_val=16, &
1574 description=
"Specify the rc parameter in the coordination function:"// &
1575 " number of hydrogens per water molecule.", &
1577 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1582 description=
"Sets the value of the numerator of the exponential factor"// &
1583 " in the coordination function: number of hydrogens per carboxyl group.", &
1584 usage=
"pAOH {integer}", default_i_val=6, &
1590 description=
"Sets the value of the denominator of the exponential factor"// &
1591 " in the coordination function: number of hydrogens per carboxyl group.", &
1592 usage=
"qAOH {integer}", default_i_val=14, &
1598 description=
"Specify the rc parameter in the coordination function:"// &
1599 " number of hydrogens per carboxyl group.", &
1601 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1606 description=
"Sets the value of the numerator of the exponential factor"// &
1607 " in the cutoff function.", &
1608 usage=
"pCUT {integer}", default_i_val=6, &
1614 description=
"Sets the value of the denominator of the exponential factor"// &
1615 " in the cutoff function.", &
1616 usage=
"qCUT {integer}", default_i_val=12, &
1622 description=
"Specifies the NC parameter in the cutoff function.", &
1623 usage=
"NC {real}", default_r_val=0.56_dp, &
1629 variants=[
"LAMBDA"], &
1630 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1631 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1636 END SUBROUTINE create_colvar_acid_hyd_dist_section
1645 SUBROUTINE create_colvar_acid_hyd_shell_section(section)
1650 cpassert(.NOT.
ASSOCIATED(section))
1651 CALL section_create(section, __location__, name=
"ACID_HYDRONIUM_SHELL", &
1652 description=
"Section to define the dissociation of a carboxylic acid in"// &
1653 " water. Number of oxygens in the 1st shell of the hydronium. Equation (3)"// &
1654 " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318. Similar to"// &
1655 " the HYDRONIUM colvar, but with modification for the acid.", &
1656 n_keywords=1, n_subsections=0, repeats=.false.)
1660 CALL keyword_create(keyword, __location__, name=
"OXYGENS_WATER", &
1661 description=
"Specifies indexes of atoms building the coordination variable."// &
1662 " Oxygens of the water molecules. ", &
1663 usage=
"OXYGENS_WATER {integer} {integer} ..", repeats=.true., &
1668 CALL keyword_create(keyword, __location__, name=
"OXYGENS_ACID", &
1669 description=
"Specifies indexes of atoms building the coordination variable."// &
1670 " Oxygens of the carboxyl groups.", &
1671 usage=
"OXYGENS_ACID {integer} {integer} ..", repeats=.true., &
1677 description=
"Specifies indexes of atoms building the coordination variable."// &
1678 " Hydrogens of the water molecules and of the carboxyl groups.", &
1679 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1685 description=
"Sets the value of the numerator of the exponential factor"// &
1686 " in the coordination function: number of hydrogens per water molecule.", &
1687 usage=
"pWOH {integer}", default_i_val=8, &
1693 description=
"Sets the value of the denominator of the exponential factor"// &
1694 " in the coordination function: number of hydrogens per water molecule.", &
1695 usage=
"qWOH {integer}", default_i_val=16, &
1701 description=
"Specifies the rc parameter in the coordination function:"// &
1702 " number of hydrogens per water molecule.", &
1704 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1709 description=
"Sets the value of the numerator of the exponential factor"// &
1710 " in the coordination function: number of hydrogens per carboxyl group.", &
1711 usage=
"pAOH {integer}", default_i_val=6, &
1717 description=
"Sets the value of the denominator of the exponential factor"// &
1718 " in the coordination function: number of hydrogens per carboxyl group.", &
1719 usage=
"qAOH {integer}", default_i_val=14, &
1725 description=
"Specifies the rc parameter in the coordination function:"// &
1726 " number of hydrogens per carboxyl group.", &
1728 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1733 description=
"Sets the value of the numerator of the exponential factor"// &
1734 " in the coordination function: number of oxygens per water oxygen.", &
1735 usage=
"pOO {integer}", default_i_val=6, &
1741 description=
"Sets the value of the denominator of the exponential factor"// &
1742 " in the coordination function: number of oxygens per water oxygen.", &
1743 usage=
"qOO {integer}", default_i_val=12, &
1749 description=
"Specifies the rc parameter in the coordination function:"// &
1750 " number of oxygens per water oxygen.", &
1752 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1757 description=
"Sets the value of the numerator of the exponential factor"// &
1758 " in the M function.", &
1759 usage=
"pM {integer}", default_i_val=8, &
1765 description=
"Sets the value of the denominator of the exponential factor"// &
1766 " in the M function.", &
1767 usage=
"qM {integer}", default_i_val=16, &
1773 description=
"Specifies the NH parameter in the M function.", &
1774 usage=
"NH {real}", default_r_val=2.2_dp, &
1780 description=
"Sets the value of the numerator of the exponential factor"// &
1781 " in the cutoff function.", &
1782 usage=
"pCUT {integer}", default_i_val=6, &
1788 description=
"Sets the value of the denominator of the exponential factor"// &
1789 " in the cutoff function.", &
1790 usage=
"qCUT {integer}", default_i_val=12, &
1796 description=
"Specifies the NC parameter in the cutoff function.", &
1797 usage=
"NC {real}", default_r_val=0.9_dp, &
1803 variants=[
"LAMBDA"], &
1804 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1805 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1810 END SUBROUTINE create_colvar_acid_hyd_shell_section
1816 SUBROUTINE create_colvar_rmsd_section(section)
1820 TYPE(
section_type),
POINTER :: subsection, subsubsection
1822 cpassert(.NOT.
ASSOCIATED(section))
1824 description=
"Section to define a CV as function of RMSD computed with respect to"// &
1825 " given reference configurations. For 2 configurations the colvar is equal to:"// &
1826 " ss = (RMSDA-RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the"// &
1827 " colvar is just the RMSD from that frame.", &
1828 n_keywords=1, n_subsections=0, repeats=.false.)
1830 NULLIFY (keyword, subsection, subsubsection)
1832 description=
"Define the subsytem used to compute the RMSD. With ALL the displacements"// &
1833 " are mass-weighted, with LIST all weights are set to 1,"// &
1834 " with WEIGHT_LIST a list of weights is expected from input.", &
1835 usage=
"SUBSET_TYPE ALL", &
1836 enum_c_vals=
s2a(
"ALL",
"LIST",
"WEIGHT_LIST"), &
1842 CALL keyword_create(keyword, __location__, name=
"ALIGN_FRAMES", &
1843 description=
"Whether the reference frames should be aligned to minimize the RMSD", &
1844 usage=
"ALIGN_FRAMES", &
1845 default_l_val=.false., lone_keyword_l_val=.true.)
1850 description=
"Specify indexes of atoms building the subset. ", &
1851 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1857 description=
"Specify weights of atoms building the subset. It is used only with WEIGHT_LIST ", &
1858 usage=
"weightS {real} {real} ..", repeats=.true., &
1859 n_var=-1, type_of_var=
real_t)
1864 description=
"Specify coordinates of the frame (number of frames can be either 1 or 2)", &
1867 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1868 description=
"Name of the xyz file with coordinates (alternative to &COORD section)", &
1869 usage=
"COORD_FILE_NAME <CHAR>", &
1874 CALL create_coord_section_cv(subsubsection,
"RMSD")
1881 END SUBROUTINE create_colvar_rmsd_section
1889 SUBROUTINE create_colvar_rpath_section(section)
1892 cpassert(.NOT.
ASSOCIATED(section))
1893 CALL section_create(section, __location__, name=
"REACTION_PATH", &
1894 description=
"Section defining a one dimensional reaction path in an Q-dimensional space of colvars. "// &
1895 "Constraining this colvar, allows to sample the space orthogonal to the reaction path, "// &
1896 "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1897 "For the details of the function see cited literature.", &
1898 n_keywords=1, n_subsections=0, repeats=.false., &
1901 CALL keywords_colvar_path(section)
1902 END SUBROUTINE create_colvar_rpath_section
1909 SUBROUTINE create_colvar_dpath_section(section)
1912 cpassert(.NOT.
ASSOCIATED(section))
1913 CALL section_create(section, __location__, name=
"DISTANCE_FROM_PATH", &
1914 description=
"Section defining the distance from a one dimensional reaction "// &
1915 "path in an Q-dimensional space of colvars. "// &
1916 "Constraining this colvar, allows to sample the space equidistant to the reaction path, "// &
1917 "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1918 "For the details of the function see cited literature.", &
1919 n_keywords=1, n_subsections=0, repeats=.false., &
1922 CALL keywords_colvar_path(section)
1923 END SUBROUTINE create_colvar_dpath_section
1930 SUBROUTINE keywords_colvar_path(section)
1935 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1937 NULLIFY (keyword, subsection, subsubsection, print_key)
1942 CALL keyword_create(keyword, __location__, name=
"DISTANCES_RMSD", &
1944 usage=
"DISTANCES_RMSD T", &
1945 default_l_val=.false., lone_keyword_l_val=.true.)
1952 default_l_val=.false., lone_keyword_l_val=.true.)
1957 description=
"Define the subsytem used to compute the RMSD", &
1958 usage=
"SUBSET_TYPE ALL", &
1959 enum_c_vals=
s2a(
"ALL",
"LIST"), &
1965 CALL keyword_create(keyword, __location__, name=
"ALIGN_FRAMES", &
1966 description=
"Whether the reference frames should be aligned to minimize the RMSD", &
1967 usage=
"ALIGN_FRAMES", &
1968 default_l_val=.false., lone_keyword_l_val=.true.)
1973 description=
"Specify indexes of atoms building the subset. ", &
1974 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1980 description=
"Specify coordinates of the frame", &
1983 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1984 description=
"Name of the xyz file with coordinates (alternative to &COORD section)", &
1985 usage=
"COORD_FILE_NAME <CHAR>", &
1990 CALL create_coord_section_cv(subsubsection,
"RMSD")
1998 description=
"Specifies the ith element of the vector valued function that defines the reaction path. "// &
1999 "This keyword needs to repeat exactly Q times, and the order must match the order of the colvars. "// &
2000 "The VARIABLE (e.g. T) which parametrises the curve can be used as the target of a constraint.", &
2001 usage=
"FUNCTION (sin(T+2)+2*T)", type_of_var=
lchar_t, &
2002 n_var=1, default_lc_val=
"0", repeats=.true.)
2007 description=
"Specifies the name of the variable that parametrises the FUNCTION "// &
2008 "defining the reaction path.", &
2009 usage=
"VARIABLE T", type_of_var=
char_t, &
2010 n_var=1, repeats=.false.)
2015 keyword, __location__, name=
"LAMBDA", &
2016 description=
"Specifies the exponent of the Gaussian used in the integral representation of the colvar. "// &
2017 "The shape of the space orthogonal to the reaction path is defined by this choice. "// &
2018 "In the limit of large values, it is given by the plane orthogonal to the path. "// &
2019 "In practice, modest values are required for stable numerical integration.", &
2020 usage=
"LAMBDA {real}", &
2021 type_of_var=
real_t, default_r_val=5.0_dp)
2026 description=
"Step size in the numerical integration, "// &
2027 "a few thousand points are common, and the proper number also depends on LAMBDA.", &
2028 usage=
"STEP_SIZE {real}", &
2029 type_of_var=
real_t, default_r_val=0.01_dp)
2034 description=
"The range of VARIABLE used for the parametrisation.", &
2035 usage=
"RANGE <REAL> <REAL>", &
2036 n_var=2, type_of_var=
real_t)
2041 print_key, __location__, name=
"MAP", &
2042 description=
"Activating this print key will print once a file with the values of the FUNCTION on a grid "// &
2043 "of COLVAR values in a specified range. "// &
2044 "GRID_SPACING and RANGE for every COLVAR has to be specified again in the same order as they are in the input.", &
2048 description=
"The range of of the grid of the COLVAR.", &
2049 usage=
"RANGE <REAL> <REAL>", &
2050 n_var=2, type_of_var=
real_t, repeats=.true.)
2054 CALL keyword_create(keyword, __location__, name=
"GRID_SPACING", &
2055 description=
"Distance between two gridpoints for the grid on the COLVAR", &
2056 usage=
"GRID_SPACING {real}", repeats=.true., &
2057 type_of_var=
real_t, default_r_val=0.01_dp)
2064 END SUBROUTINE keywords_colvar_path
2071 SUBROUTINE create_colvar_comb_section(section)
2077 cpassert(.NOT.
ASSOCIATED(section))
2078 CALL section_create(section, __location__, name=
"COMBINE_COLVAR", &
2079 description=
"Allows the possibility to combine several COLVARs into one COLVAR "// &
2080 "with a generic function. "//
docf(), &
2081 n_keywords=1, n_subsections=0, repeats=.false.)
2083 NULLIFY (keyword, subsection)
2089 description=
"Specifies the function used to combine different COLVARs into one.", &
2099 usage=
"FUNCTION SQRT(CV1^2+CV2^2)", type_of_var=
lchar_t, &
2105 description=
"Specifies the name of the variable that parametrises the FUNCTION "// &
2106 "defining how COLVARS should be combined. The matching follows the same order of the "// &
2107 "COLVARS definition in the input file.", &
2108 usage=
"VARIABLES CV1 CV2 CV3", type_of_var=
char_t, n_var=-1, repeats=.false.)
2113 description=
"Defines the parameters of the functional form", &
2114 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
2115 n_var=-1, repeats=.true.)
2120 description=
"Defines the values of parameter of the functional form", &
2121 usage=
"VALUES ", type_of_var=
real_t, &
2122 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
2127 description=
"Parameter used for computing the derivative of the combination "// &
2128 "of COLVARs with the Ridders' method.", &
2129 usage=
"DX <REAL>", default_r_val=0.1_dp, unit_str=
"bohr")
2134 description=
"Checks that the error in computing the derivative is not larger than "// &
2135 "the value set; in case error is larger a warning message is printed.", &
2136 usage=
"ERROR_LIMIT <REAL>", default_r_val=1.0e-12_dp)
2140 END SUBROUTINE create_colvar_comb_section
2148 SUBROUTINE create_coord_section_cv(section, name)
2150 CHARACTER(LEN=*),
INTENT(IN) :: name
2154 cpassert(.NOT.
ASSOCIATED(section))
2156 description=
"The positions for "//trim(name)//
" used for restart", &
2157 n_keywords=1, n_subsections=0, repeats=.false.)
2160 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2161 description=
"Specify positions of the system", repeats=.true., &
2162 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
2166 END SUBROUTINE create_coord_section_cv
2173 SUBROUTINE create_colvar_wc_section(section)
2179 cpassert(.NOT.
ASSOCIATED(section))
2181 description=
"Section to define the hbond wannier centre as a collective variables.", &
2182 n_keywords=1, n_subsections=0, repeats=.false.)
2183 NULLIFY (keyword, subsection)
2186 description=
"Parameter used for computing the cutoff radius for searching "// &
2187 "the wannier centres around an atom", &
2188 usage=
"RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str=
"angstrom", &
2189 type_of_var=
real_t, repeats=.false.)
2194 variants=[
"POINTS"], &
2195 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2196 usage=
"ATOMS {integer} {integer} {integer}", &
2197 n_var=3, type_of_var=
integer_t, repeats=.true.)
2202 CALL create_point_section(subsection)
2206 END SUBROUTINE create_colvar_wc_section
2213 SUBROUTINE create_colvar_hbp_section(section)
2219 cpassert(.NOT.
ASSOCIATED(section))
2221 description=
"Section to define the hbond wannier centre as a collective variables.", &
2222 n_keywords=1, n_subsections=0, repeats=.false.)
2223 NULLIFY (keyword, subsection)
2226 description=
"Parameter used for computing the cutoff radius for searching "// &
2227 "the wannier centres around an atom", &
2228 usage=
"RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str=
"angstrom", &
2229 type_of_var=
real_t, repeats=.false.)
2234 description=
"Parameter used for shifting each term in the sum ", &
2235 usage=
"SHIFT <REAL>", default_r_val=0.5_dp, &
2236 type_of_var=
real_t, repeats=.false.)
2241 description=
"The number of points in the path", &
2242 usage=
"NPOINTS {integer}", default_i_val=-1, &
2243 n_var=1, type_of_var=
integer_t, repeats=.false.)
2248 variants=[
"POINTS"], &
2249 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2250 usage=
"ATOMS {integer} {integer} {integer}", &
2251 n_var=3, type_of_var=
integer_t, repeats=.true.)
2256 CALL create_point_section(subsection)
2260 END SUBROUTINE create_colvar_hbp_section
2268 SUBROUTINE create_colvar_ring_puckering_section(section)
2274 cpassert(.NOT.
ASSOCIATED(section))
2275 CALL section_create(section, __location__, name=
"RING_PUCKERING", &
2276 description=
"Section to define general ring puckering collective variables.", &
2277 n_keywords=1, n_subsections=0, repeats=.false.)
2279 NULLIFY (keyword, subsection)
2282 variants=[
"POINTS"], &
2283 description=
"Specifies the indexes of atoms/points defining the ring. "// &
2284 "At least 4 Atoms are needed.", &
2285 usage=
"ATOMS {integer} {integer} {integer} ..", &
2291 description=
"Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring. "// &
2292 "0 is the total puckering variable Q, "// &
2293 "2..[N/2] are puckering coordinates. "// &
2294 "-2..-[N/2-1] are puckering angles.", &
2295 usage=
"COORDINATE {integer}", default_i_val=0, &
2301 CALL create_point_section(subsection)
2305 END SUBROUTINE create_colvar_ring_puckering_section
2311 SUBROUTINE create_voronoiipz_section(section)
2316 cpassert(.NOT.
ASSOCIATED(section))
2319 description=
"Absolute location of a hydronium ion along a Cartesian axis, "// &
2320 "based on continuous Voronoi weights.", &
2321 citations=[
zhang2025], n_subsections=0, repeats=.false.)
2324 description=
"Exponent in the Voronoi weight exp(LAMBDA*r). "// &
2325 "Negative values assign each hydrogen predominantly to nearby oxygen atoms.", &
2326 usage=
"LAMBDA [angstrom^-1] -8.0", type_of_var=
real_t, &
2327 default_r_val=
cp_unit_to_cp2k(
value=-8.0_dp, unit_str=
"angstrom^-1"), &
2328 unit_str=
"angstrom^-1", n_var=1)
2333 description=
"Coordinate of the reference plane along the selected axis.", &
2334 usage=
"ZMID [angstrom] 0.0", type_of_var=
real_t, default_r_val=0.0_dp, &
2335 unit_str=
"angstrom", n_var=1)
2340 description=
"Cartesian direction used for the ion location: 1=X, 2=Y, 3=Z.", &
2341 usage=
"ZIDX 3", type_of_var=
integer_t, default_i_val=3, n_var=1)
2346 description=
"Reference coordination of the non-reactive GROUPA atoms.", &
2347 usage=
"D_0 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2352 description=
"Reference coordination of the first reactive GROUPA atom.", &
2353 usage=
"D_1 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2358 description=
"Reference coordination of the second reactive GROUPA atom.", &
2359 usage=
"D_2 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2364 description=
"Reference coordination of the third reactive GROUPA atom.", &
2365 usage=
"D_3 2.0", type_of_var=
real_t, default_r_val=2.0_dp, n_var=1)
2370 description=
"Maximum GROUPA-GROUPB distance included in the Voronoi weights.", &
2371 usage=
"NL_CUTOFF [angstrom] 2.4", &
2373 unit_str=
"angstrom", n_var=1)
2378 description=
"Oxygen atoms used as Voronoi sites. Any reactive sites must "// &
2379 "be the final NRX entries.", &
2380 usage=
"GROUPA 1 4 7", n_var=-1, type_of_var=
integer_t)
2385 description=
"Hydrogen atoms assigned to the GROUPA sites.", &
2386 usage=
"GROUPB 2 3 5 6 8 9", n_var=-1, type_of_var=
integer_t)
2391 description=
"Number of reactive sites at the end of GROUPA (zero to three). "// &
2392 "Their reference coordinations are D_1 through D_3.", &
2393 usage=
"NRX 0", type_of_var=
integer_t, default_i_val=0, n_var=1)
2397 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...
integer, parameter, public low_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
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.