43#include "./base/base_uses.f90"
48 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .false.
49 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_colvar'
65 LOGICAL,
OPTIONAL :: skip_recursive_colvar
71 IF (
PRESENT(skip_recursive_colvar)) skip = skip_recursive_colvar
72 cpassert(.NOT.
ASSOCIATED(section))
74 description=
"This section specifies the nature of the collective variables.", &
75 n_keywords=1, n_subsections=1, repeats=.true.)
76 NULLIFY (subsection, print_key)
78 CALL create_colvar_var_section(subsection=subsection, &
79 section=section, skip_recursive_colvar=skip)
82 description=
"Controls the printing of the colvar specifications", &
83 n_keywords=0, n_subsections=1, repeats=.true.)
86 description=
"Controls the printing of basic information during colvar setup.", &
93 CALL create_clv_info_section(subsection)
106 SUBROUTINE create_clv_info_section(section)
111 cpassert(.NOT.
ASSOCIATED(section))
113 CALL section_create(section, __location__, name=
"COLVAR_FUNC_INFO", &
114 description=
"Specify further data possibly used by colvars, depending "// &
115 "on the starting geometry, for computing the functions value.", &
116 n_subsections=0, repeats=.false.)
118 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
119 description=
"Colvar function data."// &
120 " The order is an internal order. So if you decide to edit/modify/add these values by hand"// &
121 " you should know very well what you are doing.!", repeats=.true., &
122 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
126 END SUBROUTINE create_clv_info_section
135 RECURSIVE SUBROUTINE create_colvar_var_section(subsection, section, skip_recursive_colvar)
137 LOGICAL,
INTENT(IN) :: skip_recursive_colvar
139 cpassert(.NOT.
ASSOCIATED(subsection))
140 cpassert(
ASSOCIATED(section))
142 CALL create_colvar_dist_section(subsection)
146 CALL create_colvar_angle_section(subsection)
150 CALL create_colvar_torsion_section(subsection)
154 CALL create_colvar_coord_section(subsection)
158 CALL create_colvar_pop_section(subsection)
162 CALL create_colvar_gyr_section(subsection)
166 CALL create_colvar_d_pl_section(subsection)
170 CALL create_colvar_a_pl_section(subsection)
174 CALL create_colvar_rot_section(subsection)
178 CALL create_colvar_dfunct_section(subsection)
182 CALL create_colvar_qparm_section(subsection)
186 CALL create_colvar_hydronium_shell_section(subsection)
190 CALL create_colvar_hydronium_dist_section(subsection)
194 CALL create_colvar_acid_hyd_dist_section(subsection)
198 CALL create_colvar_acid_hyd_shell_section(subsection)
202 CALL create_colvar_rmsd_section(subsection)
214 CALL create_colvar_u_section(subsection)
218 CALL create_colvar_wc_section(subsection)
222 CALL create_colvar_hbp_section(subsection)
226 CALL create_colvar_ring_puckering_section(subsection)
230 CALL create_colvar_cond_dist_section(subsection)
234 IF (.NOT. skip_recursive_colvar)
THEN
235 CALL create_colvar_rpath_section(subsection)
239 CALL create_colvar_dpath_section(subsection)
243 CALL create_colvar_comb_section(subsection)
248 END SUBROUTINE create_colvar_var_section
255 SUBROUTINE create_colvar_coord_section(section)
261 cpassert(.NOT.
ASSOCIATED(section))
263 description=
"Section to define the coordination number as a collective variable.", &
264 n_keywords=1, n_subsections=0, repeats=.false.)
266 NULLIFY (subsection, keyword)
269 variants=[
"POINTS_FROM"], &
270 description=
"Specify indexes of atoms/points building the coordination variable. ", &
271 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
277 variants=[
"POINTS_TO"], &
278 description=
"Specify indexes of atoms/points building the coordination variable. ", &
279 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
285 variants=[
"POINTS_TO_B"], &
286 description=
"For the CV given by the multiplication of two coorination numbers,"// &
287 " here specify indexes of the third set of atoms/points. ", &
288 usage=
"ATOMS_TO_B {integer} {integer} ..", repeats=.true., &
294 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
295 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
296 n_var=-1, type_of_var=
char_t)
301 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
302 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
303 n_var=-1, type_of_var=
char_t)
308 description=
"For the CV given by the multiplication of two coorination numbers,"// &
309 " here specify alternatively kinds of atoms building the coordination variable.", &
310 usage=
"KINDS_TO_B {CHAR} {CHAR} ..", repeats=.true., &
311 n_var=-1, type_of_var=
char_t)
316 CALL create_point_section(subsection)
322 description=
"Specify the R0 parameter in the coordination function.", &
323 usage=
"R0 {real}", default_r_val=3.0_dp, &
324 unit_str=
"bohr", n_var=1)
329 variants=[
"EXPON_NUMERATOR"], &
330 description=
"Sets the value of the numerator of the exponential factor"// &
331 " in the coordination FUNCTION.", &
332 usage=
"NN {integer}", default_i_val=6, &
338 variants=[
"EXPON_DENOMINATOR"], &
339 description=
"Sets the value of the denominator of the exponential factor"// &
340 " in the coordination FUNCTION.", &
341 usage=
"ND {integer}", default_i_val=12, &
347 variants=[
"R_0_B"], &
348 description=
"For the CV given by the multiplication of two coorination numbers,"// &
349 " specify the R0 parameter in the second coordination function.", &
350 usage=
"R0_B {real}", default_r_val=3.0_dp, &
351 unit_str=
"bohr", n_var=1)
356 variants=[
"EXPON_NUMERATOR_B"], &
357 description=
"For the CV given by the multiplication of two coorination numbers,"// &
358 " Sets the value of the numerator of the exponential factor"// &
359 " in the coordination FUNCTION.", &
360 usage=
"NN_B {integer}", default_i_val=6, &
366 variants=[
"EXPON_DENOMINATOR_B"], &
367 description=
"For the CV given by the multiplication of two coorination numbers,"// &
368 " Sets the value of the denominator of the exponential factor"// &
369 " in the coordination FUNCTION.", &
370 usage=
"ND_B {integer}", default_i_val=12, &
375 END SUBROUTINE create_colvar_coord_section
381 SUBROUTINE create_colvar_cond_dist_section(section)
387 cpassert(.NOT.
ASSOCIATED(section))
388 CALL section_create(section, __location__, name=
"CONDITIONED_DISTANCE", &
389 description=
"Section to define the conditioned distance as a collective variable.", &
390 n_keywords=1, n_subsections=0, repeats=.false.)
392 NULLIFY (subsection, keyword)
394 CALL keyword_create(keyword, __location__, name=
"ATOMS_DISTANCE", &
395 description=
"Specify indexes of atoms/points from which the distance is computed. ", &
396 usage=
"ATOMS_DISTANCE {integer} {integer} ..", repeats=.true., &
402 variants=[
"POINTS_FROM"], &
403 description=
"Specify indexes of atoms/points building the coordination variable. ", &
404 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
410 variants=[
"POINTS_TO"], &
411 description=
"Specify indexes of atoms/points building the coordination variable. ", &
412 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
418 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
419 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
420 n_var=-1, type_of_var=
char_t)
425 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
426 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
427 n_var=-1, type_of_var=
char_t)
432 CALL create_point_section(subsection)
438 description=
"Specify the R0 parameter in the coordination function.", &
439 usage=
"R0 {real}", default_r_val=3.0_dp, &
440 unit_str=
"bohr", n_var=1)
445 variants=[
"EXPON_NUMERATOR"], &
446 description=
"Sets the value of the numerator of the exponential factor"// &
447 " in the coordination FUNCTION.", &
448 usage=
"NN {integer}", default_i_val=6, &
454 variants=[
"EXPON_DENOMINATOR"], &
455 description=
"Sets the value of the denominator of the exponential factor"// &
456 " in the coordination FUNCTION.", &
457 usage=
"ND {integer}", default_i_val=12, &
463 description=
"Specify the lambda parameter at the exponent of the conditioned distance function.", &
464 usage=
"LAMBDA {real}", default_r_val=3.0_dp, &
465 unit_str=
"bohr", n_var=1)
469 END SUBROUTINE create_colvar_cond_dist_section
477 SUBROUTINE create_colvar_pop_section(section)
483 cpassert(.NOT.
ASSOCIATED(section))
485 description=
"Section to define the population of specie as a collective variable. "// &
486 "See also <https://doi.org/10.1021/jp3019588>.", &
487 n_keywords=1, n_subsections=0, repeats=.false.)
489 NULLIFY (subsection, keyword)
492 variants=[
"POINTS_FROM"], &
493 description=
"Specify indexes of atoms/points building the coordination variable. ", &
494 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
500 variants=[
"POINTS_TO"], &
501 description=
"Specify indexes of atoms/points building the coordination variable. ", &
502 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
508 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
509 usage=
"KINDS_FROM {CHAR} {CHAR} ..", repeats=.true., &
510 n_var=-1, type_of_var=
char_t)
515 description=
"Specify alternatively kinds of atoms building the coordination variable.", &
516 usage=
"KINDS_TO {CHAR} {CHAR} ..", repeats=.true., &
517 n_var=-1, type_of_var=
char_t)
522 CALL create_point_section(subsection)
528 description=
"Specify the R0 parameter in the coordination function.", &
529 usage=
"R0 {real}", default_r_val=3.0_dp, &
535 variants=[
"EXPON_NUMERATOR"], &
536 description=
"Sets the value of the numerator of the exponential factor"// &
537 " in the coordination FUNCTION.", &
538 usage=
"NN {integer}", default_i_val=6, &
544 variants=[
"EXPON_DENOMINATOR"], &
545 description=
"Sets the value of the denominator of the exponential factor"// &
546 " in the coordination FUNCTION.", &
547 usage=
"ND {integer}", default_i_val=12, &
554 description=
"Specify the n0 parameter that sets the coordination of the species.", &
555 usage=
"n0 {integer}", default_i_val=4, &
561 description=
"Specify the gaussian width of used to build the population istogram.", &
562 usage=
"SIGMA {real}", default_r_val=0.5_dp, &
567 END SUBROUTINE create_colvar_pop_section
573 SUBROUTINE create_colvar_gyr_section(section)
579 cpassert(.NOT.
ASSOCIATED(section))
580 CALL section_create(section, __location__, name=
"GYRATION_RADIUS", &
581 description=
"Section to define the gyration radius as a collective variable.", &
582 n_keywords=1, n_subsections=0, repeats=.false.)
584 NULLIFY (subsection, keyword)
587 variants=[
"POINTS"], &
588 description=
"Specify indexes of atoms/points defyining the gyration radius variable. ", &
589 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
595 description=
"Specify alternatively kinds of atoms defining the gyration radius.", &
596 usage=
"KINDS {CHAR} {CHAR} ..", repeats=.true., &
597 n_var=-1, type_of_var=
char_t)
602 CALL create_point_section(subsection)
606 END SUBROUTINE create_colvar_gyr_section
613 SUBROUTINE create_colvar_dfunct_section(section)
619 cpassert(.NOT.
ASSOCIATED(section))
620 CALL section_create(section, __location__, name=
"DISTANCE_FUNCTION", &
621 description=
"Section to define functions between two distances as collective variables."// &
622 " The function is defined as d1+coeff*d2", &
623 n_keywords=1, n_subsections=0, repeats=.false.)
625 NULLIFY (keyword, subsection)
628 variants=[
"POINTS"], &
629 description=
"Specifies the indexes of atoms/points for the two bonds d1=(1-2) d2=(3-4).", &
630 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
636 description=
"Specifies the coefficient in the function for the constraint."// &
637 " -1.0 has to be used for distance difference, 1.0 for distance addition", &
638 usage=
"COEFFICIENT {real}", &
644 description=
"Whether periodic boundary conditions should be applied on the "// &
645 "atomic position before computing the colvar or not.", &
647 default_l_val=.true., lone_keyword_l_val=.true.)
652 CALL create_point_section(subsection)
656 END SUBROUTINE create_colvar_dfunct_section
663 SUBROUTINE create_colvar_torsion_section(section)
669 cpassert(.NOT.
ASSOCIATED(section))
671 description=
"Section to define the torsion as a collective variables.", &
672 n_keywords=1, n_subsections=0, repeats=.false.)
674 NULLIFY (keyword, subsection)
677 variants=[
"POINTS"], &
678 description=
"Specifies the indexes of atoms/points defining the torsion.", &
679 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
685 CALL create_point_section(subsection)
689 END SUBROUTINE create_colvar_torsion_section
696 SUBROUTINE create_colvar_rot_section(section)
702 cpassert(.NOT.
ASSOCIATED(section))
703 CALL section_create(section, __location__, name=
"bond_rotation", &
704 description=
"Section to define the rotation of a bond/line with respect to"// &
705 " another bond/line", &
706 n_keywords=1, n_subsections=0, repeats=.false.)
708 NULLIFY (keyword, subsection)
711 description=
"Specifies the index of atom/point defining the first point"// &
712 " of the first bond/line.", &
713 usage=
"P1_BOND1 {integer}", &
719 description=
"Specifies the index of atom/point defining the second point"// &
720 " of the first bond/line.", &
721 usage=
"P2_BOND1 {integer}", &
727 description=
"Specifies the index of atom/point defining the first point"// &
728 " of the second bond/line.", &
729 usage=
"P1_BOND2 {integer}", &
735 description=
"Specifies the index of atom/point defining the second point"// &
736 " of the second bond/line.", &
737 usage=
"P2_BOND2 {integer}", &
743 CALL create_point_section(subsection)
747 END SUBROUTINE create_colvar_rot_section
754 SUBROUTINE create_colvar_angle_section(section)
760 cpassert(.NOT.
ASSOCIATED(section))
762 description=
"Section to define the angle as a collective variables.", &
763 n_keywords=1, n_subsections=0, repeats=.false.)
764 NULLIFY (keyword, subsection)
767 variants=[
"POINTS"], &
768 description=
"Specifies the indexes of atoms/points defining the angle.", &
769 usage=
"ATOMS {integer} {integer} {integer}", &
775 CALL create_point_section(subsection)
779 END SUBROUTINE create_colvar_angle_section
786 SUBROUTINE create_colvar_dist_section(section)
792 cpassert(.NOT.
ASSOCIATED(section))
794 description=
"Section to define the distance as a collective variables.", &
795 n_keywords=1, n_subsections=0, repeats=.false.)
796 NULLIFY (keyword, subsection)
799 variants=[
"POINTS"], &
800 description=
"Specifies the indexes of atoms/points defining the distance.", &
801 usage=
"ATOMS {integer} {integer}", &
806 description=
"Define the axes along which the colvar should be evaluated", &
807 usage=
"AXIS (XYZ | X | Y | Z | XY| XZ | YZ)", &
808 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
815 description=
"Whether the distance along one Cartesian axis has to be considered with sign."// &
816 " This option is valid if only one dimension is selected.", &
818 default_l_val=.false., lone_keyword_l_val=.true.)
823 CALL create_point_section(subsection)
827 END SUBROUTINE create_colvar_dist_section
840 cpassert(.NOT.
ASSOCIATED(section))
842 description=
"Section to define the distance of an atom from its starting "// &
843 "position ((X-X(0))^2+(Y-Y(0))^2+(Z-Z(0))^2) or part of its components as a collective variable. "// &
844 "If absolute_position is specified, instead the CV is represented by the "// &
845 "instantaneous position of the atom (only available for X, Y or Z components).", &
846 n_keywords=1, n_subsections=0, repeats=.false.)
847 NULLIFY (keyword, subsection)
850 variants=[
"POINT"], &
851 description=
"Specifies the index of the atom/point.", &
852 usage=
"ATOM {integer}", &
858 description=
"Define the component of the position vector which will be used "// &
860 usage=
"COMPONENT (XYZ | X | Y | Z | XY| XZ | YZ)", &
861 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
868 description=
"Whether periodic boundary conditions should be applied on the "// &
869 "atomic position before computing the colvar or not.", &
871 default_l_val=.true., lone_keyword_l_val=.true.)
875 CALL keyword_create(keyword, __location__, name=
"ABSOLUTE_POSITION", &
876 description=
"If enabled, the absolute position of the atoms will be used. ", &
877 usage=
"ABSOLUTE_POSITION", &
878 default_l_val=.false., lone_keyword_l_val=.true.)
883 CALL create_point_section(subsection)
900 cpassert(.NOT.
ASSOCIATED(section))
901 CALL section_create(section, __location__, name=
"XYZ_OUTERDIAG", &
902 description=
"Section to define the cross term (XA-XA(0))*(XB-XB(0))+(XA-XA(0))*(YB-YB(0))"// &
903 " or part of its components as a collective variable. The final term is given by the product"// &
904 " of the components of A with the components of B.", &
905 n_keywords=1, n_subsections=0, repeats=.false.)
906 NULLIFY (keyword, subsection)
909 variants=[
"POINTS"], &
910 description=
"Specifies the index of the atoms/points A and B.", &
911 usage=
"ATOMS {integer} {integer}", &
917 description=
"Define the component of the position vector which will be used "// &
918 "as a colvar for atom A.", &
919 usage=
"COMPONENT_A (XYZ | X | Y | Z | XY| XZ | YZ)", &
920 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
927 description=
"Define the component of the position vector which will be used "// &
928 "as a colvar for atom B.", &
929 usage=
"COMPONENT_B (XYZ | X | Y | Z | XY| XZ | YZ)", &
930 enum_c_vals=
s2a(
"XYZ",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
937 description=
"Whether periodic boundary conditions should be applied on the "// &
938 "atomic position before computing the colvar or not.", &
940 default_l_val=.true., lone_keyword_l_val=.true.)
945 CALL create_point_section(subsection)
956 SUBROUTINE create_colvar_u_section(section)
962 cpassert(.NOT.
ASSOCIATED(section))
964 description=
"Section to define the energy as a generalized collective variable.", &
965 n_keywords=0, n_subsections=0, repeats=.false.)
967 NULLIFY (subsection, keyword)
969 description=
"This section allows to use any function of the energy subsystems"// &
970 " in a mixed_env calculation as a collective variable.", &
971 n_keywords=1, n_subsections=0, repeats=.false.)
973 CALL keyword_create(keyword, __location__, name=
"ENERGY_FUNCTION", &
974 description=
"Specifies the functional form of the collective variable in mathematical notation.", &
975 usage=
"ENERGY_FUNCTION (E1+E2-LOG(E1/E2))", type_of_var=
lchar_t, &
981 description=
"Defines the variables of the functional form. To allow an efficient"// &
982 " mapping the order of the energy variables will be considered identical to the"// &
983 " order of the force_eval in the force_eval_order list.", &
984 usage=
"VARIABLES x", type_of_var=
char_t, &
990 description=
"Defines the parameters of the functional form", &
991 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
992 n_var=-1, repeats=.true.)
997 description=
"Defines the values of parameter of the functional form", &
998 usage=
"VALUES ", type_of_var=
real_t, &
999 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
1004 description=
"Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1005 "It is assumed that the corresponding parameter value is specified in this unit.", &
1006 usage=
"UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=
char_t, &
1007 n_var=-1, repeats=.true.)
1012 description=
"Parameter used for computing the derivative with the Ridders' method.", &
1013 usage=
"DX <REAL>", default_r_val=0.1_dp, unit_str=
"bohr")
1018 description=
"Checks that the error in computing the derivative is not larger than "// &
1019 "the value set; in case error is larger a warning message is printed.", &
1020 usage=
"ERROR_LIMIT <REAL>", default_r_val=1.0e-12_dp)
1027 END SUBROUTINE create_colvar_u_section
1035 SUBROUTINE create_colvar_d_pl_section(section)
1041 cpassert(.NOT.
ASSOCIATED(section))
1042 CALL section_create(section, __location__, name=
"distance_point_plane", &
1043 description=
"Section to define the distance of a point from a plane "// &
1044 "as a collective variables.", &
1045 n_keywords=1, n_subsections=0, repeats=.false.)
1046 NULLIFY (keyword, subsection)
1049 description=
"Whether periodic boundary conditions should be applied on the "// &
1050 "atomic position before computing the colvar or not.", &
1052 default_l_val=.true., lone_keyword_l_val=.true.)
1057 variants=[
"POINTS_PLANE"], &
1058 description=
"Specifies the indexes of atoms/points defining the plane.", &
1059 usage=
"ATOMS_PLANE <INTEGER> <INTEGER> <INTEGER>", &
1065 variants=[
"POINT_POINT"], &
1066 description=
"Specifies the atom/point index defining the point.", &
1067 usage=
"ATOM_POINT <INTEGER>", &
1073 CALL create_point_section(subsection)
1077 END SUBROUTINE create_colvar_d_pl_section
1085 SUBROUTINE create_colvar_a_pl_section(section)
1091 cpassert(.NOT.
ASSOCIATED(section))
1092 CALL section_create(section, __location__, name=
"angle_plane_plane", &
1093 description=
"This section defines the angle between two planes "// &
1094 "as a collective variables.", &
1095 n_keywords=1, n_subsections=0, repeats=.false.)
1096 NULLIFY (keyword, subsection)
1099 description=
"This section defines the plane. When using this colvar, "// &
1100 "two plane section must be defined!", &
1101 n_keywords=1, n_subsections=0, repeats=.true.)
1104 description=
"Specify how the plane is defined: either by 3 atoms or by a fixed normal "// &
1105 "vector. At least one plane must be defined through atoms.", &
1106 usage=
"DEF_TYPE ATOMS", &
1108 enum_c_vals=
s2a(
"ATOMS",
"VECTOR"), &
1109 enum_desc=
s2a(
"Plane defined by the position of 3 atoms", &
1110 "Plane defined by a fixed normal vector"), &
1116 description=
"Specifies the indexes of 3 atoms/points defining the plane.", &
1117 usage=
"ATOMS <INTEGER> <INTEGER> <INTEGER>", &
1122 CALL keyword_create(keyword, __location__, name=
"NORMAL_VECTOR", &
1123 description=
"Alternatively to 3 atoms/points one can define one of the two, "// &
1124 "planes by defining its NORMAL vector.", &
1125 usage=
"NORMAL_VECTOR 0.0 1.0 0.0", &
1126 n_var=3, type_of_var=
real_t)
1133 CALL create_point_section(subsection)
1136 END SUBROUTINE create_colvar_a_pl_section
1143 SUBROUTINE create_point_section(section)
1148 cpassert(.NOT.
ASSOCIATED(section))
1150 description=
"Enables the possibility to use geometrical centers instead of single atoms"// &
1151 " to define colvars", &
1152 n_keywords=1, n_subsections=0, repeats=.true.)
1157 description=
"Chooses the type of geometrical point", &
1158 usage=
"type (GEO_CENTER|FIX_POINT)", &
1159 enum_c_vals=
s2a(
"GEO_CENTER",
"FIX_POINT"), &
1160 enum_desc=
s2a(
"Computes the geometrical center of the listed atoms", &
1161 "Defines a fixed point in space"), &
1168 description=
"Specifies the indexes of atoms defining the geometrical center", &
1169 usage=
"ATOMS {integer} {integer} {integer} {integer}", &
1170 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1175 keyword, __location__, name=
"WEIGHTS", &
1176 description=
"Specifies the weights for a weighted geometrical center. Default is 1/natoms for every atom", &
1177 usage=
"WEIGHTS {real} {real} {real} {real}", &
1178 n_var=-1, type_of_var=
real_t, repeats=.true.)
1183 description=
"Specifies the xyz of the fixed point (if the case)", &
1184 usage=
"XYZ {real} {real} {real}", &
1185 n_var=3, type_of_var=
real_t, unit_str=
"bohr", &
1190 END SUBROUTINE create_point_section
1197 SUBROUTINE create_colvar_qparm_section(section)
1203 cpassert(.NOT.
ASSOCIATED(section))
1205 description=
"Section to define the Q parameter (crystalline order parameter) as a collective variable.", &
1206 n_keywords=1, n_subsections=0, repeats=.false.)
1208 NULLIFY (keyword, subsection)
1211 variants=[
"POINTS_FROM"], &
1212 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1213 usage=
"ATOMS_FROM {integer} {integer} ..", repeats=.true., &
1219 variants=[
"POINTS_TO"], &
1220 description=
"Specify indexes of atoms/points building the coordination variable. ", &
1221 usage=
"ATOMS_TO {integer} {integer} ..", repeats=.true., &
1227 description=
"Specifies the distance cutoff for neighbors. "// &
1228 "Cutoff function is exactly zero for all neighbors beyond RCUT.", &
1229 usage=
"RCUT {real}", &
1230 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
1234 CALL keyword_create(keyword, __location__, name=
"INCLUDE_IMAGES", &
1235 description=
"Whether to include periodic images of ATOMS_TO into the neighbor list.", &
1236 usage=
"INCLUDE_IMAGES", &
1237 default_l_val=.false., lone_keyword_l_val=.true.)
1242 description=
"Specifies the distance cutoff for neighbors. "// &
1243 "Cutoff function is exactly 1 for all neighbors closer than RSTART.", &
1244 usage=
"RSTART {real}", &
1245 n_var=1, unit_str=
"angstrom", type_of_var=
real_t)
1250 description=
"Specifies the L spherical harmonics from Ylm.", &
1251 usage=
"L {integer}", &
1263 CALL create_point_section(subsection)
1267 END SUBROUTINE create_colvar_qparm_section
1274 SUBROUTINE create_colvar_hydronium_shell_section(section)
1279 cpassert(.NOT.
ASSOCIATED(section))
1280 CALL section_create(section, __location__, name=
"HYDRONIUM_SHELL", &
1281 description=
"Section to define the formation of a hydronium as a"// &
1282 " collective variable. Number of oxygens in the 1st shell of the"// &
1283 " hydronium. Adapted from Equation (3) in Supplementary Info of"// &
1284 " J. Am. Chem. Soc.,128, 2006, 11318, i.e. omitting the cutoff function"// &
1285 " and summing only over the oxygens of water.", &
1286 n_keywords=1, n_subsections=0, repeats=.false.)
1291 description=
"Specifies indexes of atoms building the coordination variable."// &
1292 " Oxygens of the water molecules.", &
1293 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1299 description=
"Specifies indexes of atoms building the coordination variable."// &
1300 " Hydrogens of the water molecules.", &
1301 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1307 description=
"Specifies the rc parameter in the coordination function:"// &
1308 " number of oxygens per water oxygen.", &
1310 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1315 variants=[
"EXPON_NUMERATORA"], &
1316 description=
"Sets the value of the numerator of the exponential factor"// &
1317 " in the coordination function: number of oxygens per water oxygen.", &
1318 usage=
"pOO {integer}", default_i_val=6, &
1324 variants=[
"EXPON_DENOMINATORA"], &
1325 description=
"Sets the value of the denominator of the exponential factor"// &
1326 " in the coordination function: number of oxygens per water oxygen.", &
1327 usage=
"qOO {integer}", default_i_val=12, &
1333 description=
"Specifies the rc parameter in the coordination function:"// &
1334 " number of hydrogens per water molecule.", &
1336 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1341 variants=[
"EXPON_NUMERATORB"], &
1342 description=
"Sets the value of the numerator of the exponential factor"// &
1343 " in the coordination function: number of hydrogens per water molecule.", &
1344 usage=
"pOH {integer}", default_i_val=6, &
1350 variants=[
"EXPON_DENOMINATORB"], &
1351 description=
"Sets the value of the denominator of the exponential factor"// &
1352 " in the coordination function: number of hydrogens per water molecule.", &
1353 usage=
"qOH {integer}", default_i_val=12, &
1359 description=
"Specifies the NH parameter in the M function.", &
1360 usage=
"NH {real}", default_r_val=3.0_dp, &
1366 variants=[
"EXPON_NUMERATOR"], &
1367 description=
"Sets the value of the numerator of the exponential factor"// &
1368 " in the M function.", &
1369 usage=
"pM {integer}", default_i_val=8, &
1375 variants=[
"EXPON_DENOMINATOR"], &
1376 description=
"Sets the value of the denominator of the exponential factor"// &
1377 " in the M function.", &
1378 usage=
"qM {integer}", default_i_val=16, &
1384 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1385 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1390 END SUBROUTINE create_colvar_hydronium_shell_section
1397 SUBROUTINE create_colvar_hydronium_dist_section(section)
1402 cpassert(.NOT.
ASSOCIATED(section))
1403 CALL section_create(section, __location__, name=
"HYDRONIUM_DISTANCE", &
1404 description=
"Section to define the formation of a hydronium as a"// &
1405 " collective variable. Distance between hydronium and hydroxide ion"// &
1406 " Experimental at this point, i.e. not proved to be an effective"// &
1407 " collective variable.", &
1408 n_keywords=1, n_subsections=0, repeats=.false.)
1413 description=
"Specifies indexes of atoms building the coordination variable."// &
1414 " Oxygens of the water molecules.", &
1415 usage=
"OXYGENS {integer} {integer} ..", repeats=.true., &
1421 description=
"Specifies indexes of atoms building the coordination variable."// &
1422 " Hydrogens of the water molecules.", &
1423 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1429 description=
"Specifies the rc parameter in the coordination function:"// &
1430 " number of hydrogens per water molecule.", &
1432 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1437 description=
"Sets the value of the numerator of the exponential factor"// &
1438 " in the coordination function: number of hydrogens per water molecule.", &
1439 usage=
"pOH {integer}", default_i_val=6, &
1445 description=
"Sets the value of the denominator of the exponential factor"// &
1446 " in the coordination function: number of hydrogens per water molecule.", &
1447 usage=
"qOH {integer}", default_i_val=12, &
1453 description=
"Specifies the NH parameter in the M function.", &
1454 usage=
"NH {real}", default_r_val=2.2_dp, &
1460 description=
"Sets the value of the numerator of the exponential factor"// &
1461 " in the M function.", &
1462 usage=
"pM {integer}", default_i_val=8, &
1468 description=
"Sets the value of the denominator of the exponential factor"// &
1469 " in the M function.", &
1470 usage=
"qM {integer}", default_i_val=16, &
1476 description=
"Specifies the NN parameter in the F function.", &
1477 usage=
"NN {real}", default_r_val=1.5_dp, &
1483 description=
"Sets the value of the numerator of the exponential factor"// &
1484 " in the F function.", &
1485 usage=
"pF {integer}", default_i_val=8, &
1491 description=
"Sets the value of the denominator of the exponential factor"// &
1492 " in the F function.", &
1493 usage=
"qF {integer}", default_i_val=16, &
1499 description=
"Specify the LAMBDA parameter in the hydronium function.", &
1500 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1505 END SUBROUTINE create_colvar_hydronium_dist_section
1514 SUBROUTINE create_colvar_acid_hyd_dist_section(section)
1519 cpassert(.NOT.
ASSOCIATED(section))
1520 CALL section_create(section, __location__, name=
"ACID_HYDRONIUM_DISTANCE", &
1521 description=
"Section to define the dissociation of a carboxylic acid in"// &
1522 " water. Distance between hydronium ion and acetate ion. Equation (2)"// &
1523 " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318.", &
1524 n_keywords=1, n_subsections=0, repeats=.false.)
1528 CALL keyword_create(keyword, __location__, name=
"OXYGENS_WATER", &
1529 description=
"Specifies indexes of atoms building the coordination variable."// &
1530 " Oxygens of the water molecules. ", &
1531 usage=
"OXYGENS_WATER {integer} {integer} ..", repeats=.true., &
1536 CALL keyword_create(keyword, __location__, name=
"OXYGENS_ACID", &
1537 description=
"Specifies indexes of atoms building the coordination variable."// &
1538 " Oxygens of the carboxyl groups.", &
1539 usage=
"OXYGENS_ACID {integer} {integer} ..", repeats=.true., &
1545 description=
"Specifies indexes of atoms building the coordination variable."// &
1546 " Hydrogens of the water molecules and of the carboxyl groups.", &
1547 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1553 description=
"Sets the value of the numerator of the exponential factor"// &
1554 " in the coordination function: number of hydrogens per water molecule.", &
1555 usage=
"pWOH {integer}", default_i_val=8, &
1561 description=
"Sets the value of the denominator of the exponential factor"// &
1562 " in the coordination function: number of hydrogens per water molecule.", &
1563 usage=
"qWOH {integer}", default_i_val=16, &
1569 description=
"Specify the rc parameter in the coordination function:"// &
1570 " number of hydrogens per water molecule.", &
1572 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1577 description=
"Sets the value of the numerator of the exponential factor"// &
1578 " in the coordination function: number of hydrogens per carboxyl group.", &
1579 usage=
"pAOH {integer}", default_i_val=6, &
1585 description=
"Sets the value of the denominator of the exponential factor"// &
1586 " in the coordination function: number of hydrogens per carboxyl group.", &
1587 usage=
"qAOH {integer}", default_i_val=14, &
1593 description=
"Specify the rc parameter in the coordination function:"// &
1594 " number of hydrogens per carboxyl group.", &
1596 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1601 description=
"Sets the value of the numerator of the exponential factor"// &
1602 " in the cutoff function.", &
1603 usage=
"pCUT {integer}", default_i_val=6, &
1609 description=
"Sets the value of the denominator of the exponential factor"// &
1610 " in the cutoff function.", &
1611 usage=
"qCUT {integer}", default_i_val=12, &
1617 description=
"Specifies the NC parameter in the cutoff function.", &
1618 usage=
"NC {real}", default_r_val=0.56_dp, &
1624 variants=[
"LAMBDA"], &
1625 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1626 usage=
"LAMBDA {real}", default_r_val=20.0_dp, &
1631 END SUBROUTINE create_colvar_acid_hyd_dist_section
1640 SUBROUTINE create_colvar_acid_hyd_shell_section(section)
1645 cpassert(.NOT.
ASSOCIATED(section))
1646 CALL section_create(section, __location__, name=
"ACID_HYDRONIUM_SHELL", &
1647 description=
"Section to define the dissociation of a carboxylic acid in"// &
1648 " water. Number of oxygens in the 1st shell of the hydronium. Equation (3)"// &
1649 " in Supplementary Info of J. Am. Chem. Soc.,128, 2006, 11318. Similar to"// &
1650 " the HYDRONIUM colvar, but with modification for the acid.", &
1651 n_keywords=1, n_subsections=0, repeats=.false.)
1655 CALL keyword_create(keyword, __location__, name=
"OXYGENS_WATER", &
1656 description=
"Specifies indexes of atoms building the coordination variable."// &
1657 " Oxygens of the water molecules. ", &
1658 usage=
"OXYGENS_WATER {integer} {integer} ..", repeats=.true., &
1663 CALL keyword_create(keyword, __location__, name=
"OXYGENS_ACID", &
1664 description=
"Specifies indexes of atoms building the coordination variable."// &
1665 " Oxygens of the carboxyl groups.", &
1666 usage=
"OXYGENS_ACID {integer} {integer} ..", repeats=.true., &
1672 description=
"Specifies indexes of atoms building the coordination variable."// &
1673 " Hydrogens of the water molecules and of the carboxyl groups.", &
1674 usage=
"HYDROGENS {integer} {integer} ..", repeats=.true., &
1680 description=
"Sets the value of the numerator of the exponential factor"// &
1681 " in the coordination function: number of hydrogens per water molecule.", &
1682 usage=
"pWOH {integer}", default_i_val=8, &
1688 description=
"Sets the value of the denominator of the exponential factor"// &
1689 " in the coordination function: number of hydrogens per water molecule.", &
1690 usage=
"qWOH {integer}", default_i_val=16, &
1696 description=
"Specifies the rc parameter in the coordination function:"// &
1697 " number of hydrogens per water molecule.", &
1699 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1704 description=
"Sets the value of the numerator of the exponential factor"// &
1705 " in the coordination function: number of hydrogens per carboxyl group.", &
1706 usage=
"pAOH {integer}", default_i_val=6, &
1712 description=
"Sets the value of the denominator of the exponential factor"// &
1713 " in the coordination function: number of hydrogens per carboxyl group.", &
1714 usage=
"qAOH {integer}", default_i_val=14, &
1720 description=
"Specifies the rc parameter in the coordination function:"// &
1721 " number of hydrogens per carboxyl group.", &
1723 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1728 description=
"Sets the value of the numerator of the exponential factor"// &
1729 " in the coordination function: number of oxygens per water oxygen.", &
1730 usage=
"pOO {integer}", default_i_val=6, &
1736 description=
"Sets the value of the denominator of the exponential factor"// &
1737 " in the coordination function: number of oxygens per water oxygen.", &
1738 usage=
"qOO {integer}", default_i_val=12, &
1744 description=
"Specifies the rc parameter in the coordination function:"// &
1745 " number of oxygens per water oxygen.", &
1747 unit_str=
"bohr"), unit_str=
"bohr", n_var=1)
1752 description=
"Sets the value of the numerator of the exponential factor"// &
1753 " in the M function.", &
1754 usage=
"pM {integer}", default_i_val=8, &
1760 description=
"Sets the value of the denominator of the exponential factor"// &
1761 " in the M function.", &
1762 usage=
"qM {integer}", default_i_val=16, &
1768 description=
"Specifies the NH parameter in the M function.", &
1769 usage=
"NH {real}", default_r_val=2.2_dp, &
1775 description=
"Sets the value of the numerator of the exponential factor"// &
1776 " in the cutoff function.", &
1777 usage=
"pCUT {integer}", default_i_val=6, &
1783 description=
"Sets the value of the denominator of the exponential factor"// &
1784 " in the cutoff function.", &
1785 usage=
"qCUT {integer}", default_i_val=12, &
1791 description=
"Specifies the NC parameter in the cutoff function.", &
1792 usage=
"NC {real}", default_r_val=0.9_dp, &
1798 variants=[
"LAMBDA"], &
1799 description=
"Specifies the LAMBDA parameter carboxylic acid function.", &
1800 usage=
"LAMBDA {real}", default_r_val=10.0_dp, &
1805 END SUBROUTINE create_colvar_acid_hyd_shell_section
1811 SUBROUTINE create_colvar_rmsd_section(section)
1815 TYPE(
section_type),
POINTER :: subsection, subsubsection
1817 cpassert(.NOT.
ASSOCIATED(section))
1819 description=
"Section to define a CV as function of RMSD computed with respect to"// &
1820 " given reference configurations. For 2 configurations the colvar is equal to:"// &
1821 " ss = (RMSDA-RMSDB)/(RMSDA+RMSDB), while if only 1 configuration is given, then the"// &
1822 " colvar is just the RMSD from that frame.", &
1823 n_keywords=1, n_subsections=0, repeats=.false.)
1825 NULLIFY (keyword, subsection, subsubsection)
1827 description=
"Define the subsytem used to compute the RMSD. With ALL the displacements"// &
1828 " are mass-weighted, with LIST all weights are set to 1,"// &
1829 " with WEIGHT_LIST a list of weights is expected from input.", &
1830 usage=
"SUBSET_TYPE ALL", &
1831 enum_c_vals=
s2a(
"ALL",
"LIST",
"WEIGHT_LIST"), &
1837 CALL keyword_create(keyword, __location__, name=
"ALIGN_FRAMES", &
1838 description=
"Whether the reference frames should be aligned to minimize the RMSD", &
1839 usage=
"ALIGN_FRAMES", &
1840 default_l_val=.false., lone_keyword_l_val=.true.)
1845 description=
"Specify indexes of atoms building the subset. ", &
1846 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1852 description=
"Specify weights of atoms building the subset. It is used only with WEIGHT_LIST ", &
1853 usage=
"weightS {real} {real} ..", repeats=.true., &
1854 n_var=-1, type_of_var=
real_t)
1859 description=
"Specify coordinates of the frame (number of frames can be either 1 or 2)", &
1862 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1863 description=
"Name of the xyz file with coordinates (alternative to &COORD section)", &
1864 usage=
"COORD_FILE_NAME <CHAR>", &
1869 CALL create_coord_section_cv(subsubsection,
"RMSD")
1876 END SUBROUTINE create_colvar_rmsd_section
1884 SUBROUTINE create_colvar_rpath_section(section)
1887 cpassert(.NOT.
ASSOCIATED(section))
1888 CALL section_create(section, __location__, name=
"REACTION_PATH", &
1889 description=
"Section defining a one dimensional reaction path in an Q-dimensional space of colvars. "// &
1890 "Constraining this colvar, allows to sample the space orthogonal to the reaction path, "// &
1891 "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1892 "For the details of the function see cited literature.", &
1893 n_keywords=1, n_subsections=0, repeats=.false., &
1896 CALL keywords_colvar_path(section)
1897 END SUBROUTINE create_colvar_rpath_section
1904 SUBROUTINE create_colvar_dpath_section(section)
1907 cpassert(.NOT.
ASSOCIATED(section))
1908 CALL section_create(section, __location__, name=
"DISTANCE_FROM_PATH", &
1909 description=
"Section defining the distance from a one dimensional reaction "// &
1910 "path in an Q-dimensional space of colvars. "// &
1911 "Constraining this colvar, allows to sample the space equidistant to the reaction path, "// &
1912 "both in the Q-dimensional colvar and 3N-Q remaining coordinates. "// &
1913 "For the details of the function see cited literature.", &
1914 n_keywords=1, n_subsections=0, repeats=.false., &
1917 CALL keywords_colvar_path(section)
1918 END SUBROUTINE create_colvar_dpath_section
1925 SUBROUTINE keywords_colvar_path(section)
1930 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1932 NULLIFY (keyword, subsection, subsubsection, print_key)
1937 CALL keyword_create(keyword, __location__, name=
"DISTANCES_RMSD", &
1939 usage=
"DISTANCES_RMSD T", &
1940 default_l_val=.false., lone_keyword_l_val=.true.)
1947 default_l_val=.false., lone_keyword_l_val=.true.)
1952 description=
"Define the subsytem used to compute the RMSD", &
1953 usage=
"SUBSET_TYPE ALL", &
1954 enum_c_vals=
s2a(
"ALL",
"LIST"), &
1960 CALL keyword_create(keyword, __location__, name=
"ALIGN_FRAMES", &
1961 description=
"Whether the reference frames should be aligned to minimize the RMSD", &
1962 usage=
"ALIGN_FRAMES", &
1963 default_l_val=.false., lone_keyword_l_val=.true.)
1968 description=
"Specify indexes of atoms building the subset. ", &
1969 usage=
"ATOMS {integer} {integer} ..", repeats=.true., &
1975 description=
"Specify coordinates of the frame", &
1978 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1979 description=
"Name of the xyz file with coordinates (alternative to &COORD section)", &
1980 usage=
"COORD_FILE_NAME <CHAR>", &
1985 CALL create_coord_section_cv(subsubsection,
"RMSD")
1993 description=
"Specifies the ith element of the vector valued function that defines the reaction path. "// &
1994 "This keyword needs to repeat exactly Q times, and the order must match the order of the colvars. "// &
1995 "The VARIABLE (e.g. T) which parametrises the curve can be used as the target of a constraint.", &
1996 usage=
"FUNCTION (sin(T+2)+2*T)", type_of_var=
lchar_t, &
1997 n_var=1, default_lc_val=
"0", repeats=.true.)
2002 description=
"Specifies the name of the variable that parametrises the FUNCTION "// &
2003 "defining the reaction path.", &
2004 usage=
"VARIABLE T", type_of_var=
char_t, &
2005 n_var=1, repeats=.false.)
2010 keyword, __location__, name=
"LAMBDA", &
2011 description=
"Specifies the exponent of the Gaussian used in the integral representation of the colvar. "// &
2012 "The shape of the space orthogonal to the reaction path is defined by this choice. "// &
2013 "In the limit of large values, it is given by the plane orthogonal to the path. "// &
2014 "In practice, modest values are required for stable numerical integration.", &
2015 usage=
"LAMBDA {real}", &
2016 type_of_var=
real_t, default_r_val=5.0_dp)
2021 description=
"Step size in the numerical integration, "// &
2022 "a few thousand points are common, and the proper number also depends on LAMBDA.", &
2023 usage=
"STEP_SIZE {real}", &
2024 type_of_var=
real_t, default_r_val=0.01_dp)
2029 description=
"The range of VARIABLE used for the parametrisation.", &
2030 usage=
"RANGE <REAL> <REAL>", &
2031 n_var=2, type_of_var=
real_t)
2036 print_key, __location__, name=
"MAP", &
2037 description=
"Activating this print key will print once a file with the values of the FUNCTION on a grid "// &
2038 "of COLVAR values in a specified range. "// &
2039 "GRID_SPACING and RANGE for every COLVAR has to be specified again in the same order as they are in the input.", &
2043 description=
"The range of of the grid of the COLVAR.", &
2044 usage=
"RANGE <REAL> <REAL>", &
2045 n_var=2, type_of_var=
real_t, repeats=.true.)
2049 CALL keyword_create(keyword, __location__, name=
"GRID_SPACING", &
2050 description=
"Distance between two gridpoints for the grid on the COLVAR", &
2051 usage=
"GRID_SPACING {real}", repeats=.true., &
2052 type_of_var=
real_t, default_r_val=0.01_dp)
2059 END SUBROUTINE keywords_colvar_path
2066 SUBROUTINE create_colvar_comb_section(section)
2072 cpassert(.NOT.
ASSOCIATED(section))
2073 CALL section_create(section, __location__, name=
"COMBINE_COLVAR", &
2074 description=
"Allows the possibility to combine several COLVARs into one COLVAR "// &
2075 "with a generic function. "//
docf(), &
2076 n_keywords=1, n_subsections=0, repeats=.false.)
2078 NULLIFY (keyword, subsection)
2084 description=
"Specifies the function used to combine different COLVARs into one.", &
2094 usage=
"FUNCTION SQRT(CV1^2+CV2^2)", type_of_var=
lchar_t, &
2100 description=
"Specifies the name of the variable that parametrises the FUNCTION "// &
2101 "defining how COLVARS should be combined. The matching follows the same order of the "// &
2102 "COLVARS definition in the input file.", &
2103 usage=
"VARIABLES CV1 CV2 CV3", type_of_var=
char_t, n_var=-1, repeats=.false.)
2108 description=
"Defines the parameters of the functional form", &
2109 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
2110 n_var=-1, repeats=.true.)
2115 description=
"Defines the values of parameter of the functional form", &
2116 usage=
"VALUES ", type_of_var=
real_t, &
2117 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
2122 description=
"Parameter used for computing the derivative of the combination "// &
2123 "of COLVARs with the Ridders' method.", &
2124 usage=
"DX <REAL>", default_r_val=0.1_dp, unit_str=
"bohr")
2129 description=
"Checks that the error in computing the derivative is not larger than "// &
2130 "the value set; in case error is larger a warning message is printed.", &
2131 usage=
"ERROR_LIMIT <REAL>", default_r_val=1.0e-12_dp)
2135 END SUBROUTINE create_colvar_comb_section
2143 SUBROUTINE create_coord_section_cv(section, name)
2145 CHARACTER(LEN=*),
INTENT(IN) :: name
2149 cpassert(.NOT.
ASSOCIATED(section))
2151 description=
"The positions for "//trim(name)//
" used for restart", &
2152 n_keywords=1, n_subsections=0, repeats=.false.)
2155 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2156 description=
"Specify positions of the system", repeats=.true., &
2157 usage=
"{Real} ...", type_of_var=
real_t, n_var=-1)
2161 END SUBROUTINE create_coord_section_cv
2168 SUBROUTINE create_colvar_wc_section(section)
2174 cpassert(.NOT.
ASSOCIATED(section))
2176 description=
"Section to define the hbond wannier centre as a collective variables.", &
2177 n_keywords=1, n_subsections=0, repeats=.false.)
2178 NULLIFY (keyword, subsection)
2181 description=
"Parameter used for computing the cutoff radius for searching "// &
2182 "the wannier centres around an atom", &
2183 usage=
"RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str=
"angstrom", &
2184 type_of_var=
real_t, repeats=.false.)
2189 variants=[
"POINTS"], &
2190 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2191 usage=
"ATOMS {integer} {integer} {integer}", &
2192 n_var=3, type_of_var=
integer_t, repeats=.true.)
2197 CALL create_point_section(subsection)
2201 END SUBROUTINE create_colvar_wc_section
2208 SUBROUTINE create_colvar_hbp_section(section)
2214 cpassert(.NOT.
ASSOCIATED(section))
2216 description=
"Section to define the hbond wannier centre as a collective variables.", &
2217 n_keywords=1, n_subsections=0, repeats=.false.)
2218 NULLIFY (keyword, subsection)
2221 description=
"Parameter used for computing the cutoff radius for searching "// &
2222 "the wannier centres around an atom", &
2223 usage=
"RCUT <REAL>", default_r_val=0.529177208590000_dp, unit_str=
"angstrom", &
2224 type_of_var=
real_t, repeats=.false.)
2229 description=
"Parameter used for shifting each term in the sum ", &
2230 usage=
"SHIFT <REAL>", default_r_val=0.5_dp, &
2231 type_of_var=
real_t, repeats=.false.)
2236 description=
"The number of points in the path", &
2237 usage=
"NPOINTS {integer}", default_i_val=-1, &
2238 n_var=1, type_of_var=
integer_t, repeats=.false.)
2243 variants=[
"POINTS"], &
2244 description=
"Specifies the indexes of atoms/points defining the bond (Od, H, Oa).", &
2245 usage=
"ATOMS {integer} {integer} {integer}", &
2246 n_var=3, type_of_var=
integer_t, repeats=.true.)
2251 CALL create_point_section(subsection)
2255 END SUBROUTINE create_colvar_hbp_section
2263 SUBROUTINE create_colvar_ring_puckering_section(section)
2269 cpassert(.NOT.
ASSOCIATED(section))
2270 CALL section_create(section, __location__, name=
"RING_PUCKERING", &
2271 description=
"Section to define general ring puckering collective variables.", &
2272 n_keywords=1, n_subsections=0, repeats=.false.)
2274 NULLIFY (keyword, subsection)
2277 variants=[
"POINTS"], &
2278 description=
"Specifies the indexes of atoms/points defining the ring. "// &
2279 "At least 4 Atoms are needed.", &
2280 usage=
"ATOMS {integer} {integer} {integer} ..", &
2286 description=
"Indicate the coordinate to be used. Follow the Cremer-Pople definition for a N ring. "// &
2287 "0 is the total puckering variable Q, "// &
2288 "2..[N/2] are puckering coordinates. "// &
2289 "-2..-[N/2-1] are puckering angles.", &
2290 usage=
"COORDINATE {integer}", default_i_val=0, &
2296 CALL create_point_section(subsection)
2300 END SUBROUTINE create_colvar_ring_puckering_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public branduardi2007
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.