55#include "./base/base_uses.f90"
60 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
61 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_mm'
81 cpassert(.NOT.
ASSOCIATED(section))
83 description=
"This section contains all information to run a MM calculation.", &
84 n_keywords=5, n_subsections=0, repeats=.false.)
88 CALL create_forcefield_section(subsection)
104 CALL create_print_mm_section(subsection)
115 SUBROUTINE create_print_mm_section(section)
121 cpassert(.NOT.
ASSOCIATED(section))
123 description=
"Section of possible print options in MM code.", &
124 n_keywords=0, n_subsections=1, repeats=.false.)
126 NULLIFY (print_key, keyword)
129 description=
"Controls the printing of derivatives.", &
135 description=
"Controls the printing of Ewald energy components during the "// &
136 "evaluation of the electrostatics.", &
146 description=
"Activates the printing of the neighbor lists.", &
152 description=
"Activates the printing of iteration info during the self-consistent "// &
153 "calculation of a polarizable forcefield.", &
159 description=
"Activates the printing of the subcells used for the "// &
160 "generation of neighbor lists.", &
166 description=
"Controls the printing of the banner of the MM program", &
172 description=
"Controls the printing of information regarding the run.", &
178 "Controls the printing of Force Field parameter file", &
184 "Controls the printing of information in the forcefield settings", &
188 description=
"if the printkey is active prints information regarding the splines"// &
189 " used in the nonbonded interactions", &
190 default_l_val=.true., lone_keyword_l_val=.true.)
195 description=
"if the printkey is active prints on separated files the splined function"// &
196 " together with the reference one. Useful to check the spline behavior.", &
197 default_l_val=.false., lone_keyword_l_val=.true.)
204 END SUBROUTINE create_print_mm_section
212 SUBROUTINE create_forcefield_section(section)
218 cpassert(.NOT.
ASSOCIATED(section))
220 description=
"Section specifying information regarding how to set up properly"// &
221 " a force_field for the classical calculations.", &
222 n_keywords=2, n_subsections=2, repeats=.false.)
224 NULLIFY (subsection, keyword)
227 keyword, __location__, name=
"PARMTYPE", &
228 description=
"Define the kind of torsion potential", &
229 usage=
"PARMTYPE {OFF,CHM,G87,G96}", &
230 enum_c_vals=
s2a(
"OFF",
"CHM",
"G87",
"G96",
"AMBER"), &
231 enum_desc=
s2a(
"Provides force field parameters through the input file", &
232 "Provides force field parameters through an external file with CHARMM format", &
233 "Provides force field parameters through an external file with GROMOS 87 format", &
234 "Provides force field parameters through an external file with GROMOS 96 format", &
235 "Provides force field parameters through an external file with AMBER format (from v.8 on)"), &
245 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
246 description=
"Specifies the filename that contains the parameters of the FF.", &
247 usage=
"PARM_FILE_NAME {FILENAME}", type_of_var=
lchar_t)
252 description=
"Scaling factor for the VDW 1-4 ", &
253 usage=
"VDW_SCALE14 1.0", default_r_val=1.0_dp)
258 description=
"Scaling factor for the electrostatics 1-4 ", &
259 usage=
"EI_SCALE14 1.0", default_r_val=0.0_dp)
264 description=
"Add a constant energy shift to the real-space "// &
265 "non-bonding interactions (both Van der Waals and "// &
266 "electrostatic) such that the energy at the cutoff radius is "// &
267 "zero. This makes the non-bonding interactions continuous at "// &
269 usage=
"SHIFT_CUTOFF <LOGICAL>", default_l_val=.true.)
274 description=
"Controls the computation of all the real-space "// &
275 "(short-range) nonbonded interactions. This also "// &
276 "includes the real-space corrections for excluded "// &
277 "or scaled 1-2, 1-3 and 1-4 interactions. When set "// &
278 "to F, the neighborlists are not created and all "// &
279 "interactions that depend on them are not computed.", &
280 usage=
"DO_NONBONDED T", default_l_val=.true., lone_keyword_l_val=.true.)
284 CALL keyword_create(keyword, __location__, name=
"DO_ELECTROSTATICS", &
285 description=
"Controls the computation of all the real-space "// &
286 "(short-range) electrostatics interactions. This does not "// &
287 "affect the QM/MM electrostatic coupling when turned off.", &
288 usage=
"DO_ELECTROSTATICS T", default_l_val=.true., lone_keyword_l_val=.true.)
292 CALL keyword_create(keyword, __location__, name=
"IGNORE_MISSING_CRITICAL_PARAMS", &
293 description=
"Do not abort when critical force-field parameters "// &
294 "are missing. CP2K will run as if the terms containing the "// &
295 "missing parameters are zero.", &
296 usage=
"IGNORE_MISSING_CRITICAL_PARAMS .TRUE.", default_l_val=.false., &
297 lone_keyword_l_val=.true.)
301 CALL keyword_create(keyword, __location__, name=
"MULTIPLE_POTENTIAL", &
302 description=
"Enables the possibility to define NONBONDED and NONBONDED14 as a"// &
303 " sum of different kinds of potential. Useful for piecewise defined potentials.", &
304 usage=
"MULTIPLE_POTENTIAL T", default_l_val=.false., lone_keyword_l_val=.true.)
308 CALL keyword_create(keyword, __location__, name=
"ZBL_SCATTERING", &
309 description=
"A short range repulsive potential is added, to simulate "// &
310 "collisions and scattering.", &
311 usage=
"ZBL_SCATTERING T", default_l_val=.false., lone_keyword_l_val=.true.)
318 CALL create_spline_section(subsection)
322 CALL create_nonbonded_section(subsection)
334 CALL create_charges_section(subsection)
338 CALL create_shell_section(subsection)
342 CALL create_bond_section(subsection,
"BOND")
346 CALL create_bend_section(subsection)
350 CALL create_torsion_section(subsection)
354 CALL create_improper_section(subsection)
358 CALL create_opbend_section(subsection)
362 CALL create_dipole_section(subsection)
366 CALL create_quadrupole_section(subsection)
370 END SUBROUTINE create_forcefield_section
377 SUBROUTINE create_spline_section(section)
382 cpassert(.NOT.
ASSOCIATED(section))
384 description=
"specifies parameters to set up the splines used in the"// &
385 " nonboned interactions (both pair body potential and many body potential)", &
386 n_keywords=1, n_subsections=0, repeats=.true.)
391 description=
"Specify the minimum value of the distance interval "// &
392 "that brackets the value of emax_spline.", &
400 description=
"Cutoff radius for nonbonded interactions. This value overrides"// &
401 " the value specified in the potential definition and is global for all potentials.", &
403 unit_str=
"angstrom"), &
409 description=
"Specify the maximum value of the potential up to which"// &
410 " splines will be constructed", &
411 usage=
"EMAX_SPLINE <REAL>", &
412 default_r_val=0.5_dp, unit_str=
"hartree")
416 CALL keyword_create(keyword, __location__, name=
"EMAX_ACCURACY", &
417 description=
"Specify the maximum value of energy used to check the accuracy"// &
418 " requested through EPS_SPLINE. Energy values larger than EMAX_ACCURACY"// &
419 " generally do not satisfy the requested accuracy", &
420 usage=
"EMAX_ACCURACY <REAL>", default_r_val=0.02_dp, unit_str=
"hartree")
425 description=
"Specify the threshold for the choice of the number of"// &
426 " points used in the splines (comparing the splined value with the"// &
427 " analytically evaluated one)", &
428 usage=
"EPS_SPLINE <REAL>", default_r_val=1.0e-7_dp, unit_str=
"hartree")
433 keyword, __location__, name=
"NPOINTS", &
434 description=
"Override the default search for an accurate spline by specifying a fixed number of spline points.", &
435 usage=
"NPOINTS 1024", default_i_val=-1)
439 CALL keyword_create(keyword, __location__, name=
"UNIQUE_SPLINE", &
440 description=
"For few potentials (Lennard-Jones) one global optimal spline is generated instead"// &
441 " of different optimal splines for each kind of potential", &
442 usage=
"UNIQUE_SPLINE <LOGICAL>", lone_keyword_l_val=.true., default_l_val=.false.)
446 END SUBROUTINE create_spline_section
453 SUBROUTINE create_torsion_section(section)
458 cpassert(.NOT.
ASSOCIATED(section))
460 description=
"Specifies the torsion potential of the MM system.", &
461 n_keywords=1, n_subsections=0, repeats=.true.)
465 description=
"Defines the atomic kinds involved in the tors.", &
466 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
472 description=
"Define the kind of torsion potential", &
473 usage=
"KIND CHARMM", &
474 enum_c_vals=
s2a(
"CHARMM",
"G87",
"G96",
"AMBER",
"OPLS"), &
475 enum_desc=
s2a(
"Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", &
476 "Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", &
477 "Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", &
478 "Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", &
479 "Functional Form: K / 2 * [ 1 + (-1)^(M-1) * cos[M*PHI]]"), &
490 description=
"Defines the force constant of the potential", &
491 usage=
"K {real}", type_of_var=
real_t, &
492 n_var=1, unit_str=
"hartree")
497 description=
"Defines the phase of the potential.", &
498 usage=
"PHI0 {real}", type_of_var=
real_t, &
499 n_var=1, unit_str=
"rad", default_r_val=0.0_dp)
504 description=
"Defines the multiplicity of the potential.", &
505 usage=
"M {integer}", type_of_var=
integer_t, &
510 END SUBROUTINE create_torsion_section
517 SUBROUTINE create_improper_section(section)
522 cpassert(.NOT.
ASSOCIATED(section))
524 description=
"Specifies the improper torsion potential of the MM system.", &
525 n_keywords=1, n_subsections=0, repeats=.true.)
529 description=
"Defines the atomic kinds involved in the improper tors.", &
530 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
536 description=
"Define the kind of improper torsion potential", &
537 usage=
"KIND CHARMM", &
538 enum_c_vals=
s2a(
"CHARMM",
"G87",
"G96",
"HARMONIC"), &
539 enum_desc=
s2a(
"Functional Form (CHARMM): K * [ PHI - PHI0 ]**2", &
540 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", &
541 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", &
542 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2"), &
552 description=
"Defines the force constant of the potential", &
553 usage=
"K {real}", type_of_var=
real_t, &
554 n_var=1, unit_str=
"hartree*rad^-2")
559 description=
"Defines the phase of the potential.", &
560 usage=
"PHI0 {real}", type_of_var=
real_t, &
561 n_var=1, unit_str=
"rad")
565 END SUBROUTINE create_improper_section
572 SUBROUTINE create_opbend_section(section)
577 cpassert(.NOT.
ASSOCIATED(section))
579 description=
"Specifies the out of plane bend potential of the MM system."// &
580 " (Only defined for atom quadruples which are also defined as an improper"// &
581 " pattern in the topology.)", &
582 n_keywords=1, n_subsections=0, repeats=.true.)
586 description=
"Defines the atomic kinds involved in the opbend.", &
587 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
593 description=
"Define the kind of out of plane bend potential", &
594 usage=
"KIND HARMONIC", &
595 enum_c_vals=
s2a(
"HARMONIC",
"MM2",
"MM3",
"MM4"), &
596 enum_desc=
s2a(
"Functional Form (HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", &
597 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", &
598 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", &
599 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2"), &
609 description=
"Defines the force constant of the potential", &
610 usage=
"K {real}", type_of_var=
real_t, &
611 n_var=1, unit_str=
"hartree*rad^-2")
616 description=
"Defines the phase of the potential.", &
617 usage=
"PHI0 {real}", type_of_var=
real_t, &
618 n_var=1, unit_str=
"rad")
622 END SUBROUTINE create_opbend_section
629 SUBROUTINE create_bend_section(section)
635 cpassert(.NOT.
ASSOCIATED(section))
637 description=
"Specifies the bend potential of the MM system.", &
638 n_keywords=11, n_subsections=1, repeats=.true.)
640 NULLIFY (keyword, subsection)
643 description=
"Defines the atomic kinds involved in the bend.", &
644 usage=
"ATOMS {KIND1} {KIND2} {KIND3}", type_of_var=
char_t, &
650 keyword, __location__, name=
"KIND", &
651 description=
"Define the kind of bend potential", &
652 usage=
"KIND HARMONIC", &
653 enum_c_vals=
s2a(
"HARMONIC",
"CHARMM",
"AMBER",
"G87",
"G96",
"CUBIC",
"MIXED_BEND_STRETCH",
"MM3", &
655 enum_desc=
s2a(
"Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", &
656 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", &
657 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", &
658 "Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", &
659 "Functional Form (G96): 1/2*K*(COS(THETA)-THETA0)^2", &
660 "Functional Form (CUBIC): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))", &
661 "Functional Form (MIXED_BEND_STRETCH): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))+"// &
662 " KSS*(R12-R012)*(R32-R032)+KBS12*(R12-R012)*(THETA-THETA0)+KBS32*(R32-R032)*(THETA-THETA0)", &
663 "Functional Form (MM3): 1/2*K*(THETA-THETA0)**2*(1-0.014*(THETA-THETA0)+5.6E-5*(THETA-THETA0)**2"// &
664 " -7.0E-7*(THETA-THETA0)**3+9.0E-10*(THETA-THETA0)**4)+KBS12*(R12-R012)*(THETA-THETA0)+"// &
665 " KBS32*(R32-R032)*(THETA-THETA0)", &
666 "Functional Form (LEGENDRE): sum_{i=0}^N c_i*P_i(COS(THETA)) "), &
681 description=
"Defines the force constant of the potential", &
682 usage=
"K {real}", type_of_var=
real_t, &
683 n_var=1, unit_str=
"hartree*rad^-2")
688 description=
"Defines the the cubic force constant of the bend", &
689 usage=
"CB {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
690 n_var=1, unit_str=
"rad^-1")
695 description=
"Mixed bend stretch parameter", &
696 usage=
"R012 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
697 n_var=1, unit_str=
"bohr")
701 description=
"Mixed bend stretch parameter", &
702 usage=
"R032 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
703 n_var=1, unit_str=
"bohr")
707 description=
"Mixed bend stretch parameter", &
708 usage=
"KBS12 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
709 n_var=1, unit_str=
"hartree*bohr^-1*rad^-1")
713 description=
"Mixed bend stretch parameter", &
714 usage=
"KBS32 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
715 n_var=1, unit_str=
"hartree*bohr^-1*rad^-1")
719 description=
"Mixed bend stretch parameter", &
720 usage=
"KSS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
721 n_var=1, unit_str=
"hartree*bohr^-2")
726 description=
"Defines the equilibrium angle.", &
727 usage=
"THETA0 {real}", type_of_var=
real_t, &
728 n_var=1, unit_str=
'rad')
733 description=
"Specifies the coefficients for the legendre"// &
734 " expansion of the bending potential."// &
735 " 'THETA0' and 'K' are not used, but need to be specified."// &
736 " Use an arbitrary value.", usage=
"LEGENDRE {REAL} {REAL} ...", &
737 default_r_val=0.0d0, type_of_var=
real_t, &
738 n_var=-1, unit_str=
"hartree")
743 CALL create_bond_section(subsection,
"UB")
747 END SUBROUTINE create_bend_section
755 SUBROUTINE create_bond_section(section, label)
757 CHARACTER(LEN=*),
INTENT(IN) :: label
759 CHARACTER(LEN=default_string_length) :: tag
762 cpassert(.NOT.
ASSOCIATED(section))
765 IF (trim(label) ==
"UB")
THEN
766 tag =
" Urey-Bradley "
768 description=
"Specifies the Urey-Bradley potential between the external atoms"// &
769 " defining the angle", &
770 n_keywords=1, n_subsections=0, repeats=.false.)
775 description=
"Specifies the bond potential", &
776 n_keywords=1, n_subsections=0, repeats=.true.)
779 description=
"Defines the atomic kinds involved in the bond.", &
780 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
787 description=
"Define the kind of"//trim(tag)//
"potential.", &
788 usage=
"KIND HARMONIC", &
789 enum_c_vals=
s2a(
"HARMONIC",
"CHARMM",
"AMBER",
"G87",
"G96",
"QUARTIC", &
790 "MORSE",
"CUBIC",
"FUES"), &
791 enum_desc=
s2a(
"Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", &
792 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", &
793 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", &
794 "Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", &
795 "Functional Form (G96): 1/4*K*(R^2-R0^2)^2", &
796 "Functional Form (QUARTIC): (1/2*K1+[1/3*K2+1/4*K3*|R-R0|]*|R-R0|)(R-R0)^2", &
797 "Functional Form (MORSE): K1*[(1-exp(-K2*(R-R0)))^2-1])", &
798 "Functional Form (CUBIC): K*(R-R0)^2*(1+cs*(R-R0)+7/12*(cs^2*(R-R0)^2))", &
799 "Functional Form (FUES): 1/2*K*R0^2*(1+R0/R*(R0/R-2))"), &
814 description=
"Defines the force constant of the potential. "// &
815 "For MORSE potentials 2 numbers are expected. "// &
816 "For QUARTIC potentials 3 numbers are expected.", &
817 usage=
"K {real}", type_of_var=
real_t, &
818 n_var=-1, unit_str=
"internal_cp2k")
823 description=
"Defines the cubic stretch term.", &
824 usage=
"CS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
825 n_var=1, unit_str=
"bohr^-1")
830 description=
"Defines the equilibrium distance.", &
831 usage=
"R0 {real}", type_of_var=
real_t, &
832 n_var=1, unit_str=
"bohr")
836 END SUBROUTINE create_bond_section
843 SUBROUTINE create_charges_section(section)
848 cpassert(.NOT.
ASSOCIATED(section))
850 description=
"Allow to specify an array of classical charges, thus avoiding the"// &
851 " packing and permitting the usage of different charges for same atomic types.", &
852 n_keywords=1, n_subsections=0, repeats=.false.)
855 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
856 description=
"Value of the charge for the individual atom. Order MUST reflect"// &
857 " the one specified for the geometry.", repeats=.true., usage=
"{Real}", &
862 END SUBROUTINE create_charges_section
874 cpassert(.NOT.
ASSOCIATED(section))
876 description=
"This section specifies the charge of the MM atoms", &
877 n_keywords=1, n_subsections=0, repeats=.true.)
882 description=
"Defines the atomic kind of the charge.", &
883 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
889 description=
"Defines the charge of the MM atom in electron charge unit.", &
890 usage=
"CHARGE {real}", type_of_var=
real_t, &
902 SUBROUTINE create_quadrupole_section(section)
907 cpassert(.NOT.
ASSOCIATED(section))
909 section, __location__, name=
"QUADRUPOLE", &
910 description=
"This section specifies that we will perform an SCF quadrupole calculation of the MM atoms. "// &
911 "Needs KEYWORD POL_SCF in POISSON secton", &
912 n_keywords=1, n_subsections=0, repeats=.true.)
917 description=
"Defines the atomic kind of the SCF quadrupole.", &
918 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
924 description=
"Defines the isotropic polarizability of the MM atom.", &
925 usage=
"CPOL {real}", type_of_var=
real_t, &
926 n_var=1, unit_str=
'internal_cp2k')
930 END SUBROUTINE create_quadrupole_section
937 SUBROUTINE create_dipole_section(section)
943 cpassert(.NOT.
ASSOCIATED(section))
945 description=
"This section specifies that we will perform an SCF dipole calculation of the MM atoms. "// &
946 "Needs KEYWORD POL_SCF in POISSON secton", &
947 n_keywords=1, n_subsections=1, repeats=.true.)
949 NULLIFY (subsection, keyword)
952 description=
"Defines the atomic kind of the SCF dipole.", &
953 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
959 description=
"Defines the isotropic polarizability of the MM atom.", &
960 usage=
"APOL {real}", type_of_var=
real_t, &
961 n_var=1, unit_str=
'angstrom^3')
965 CALL create_damping_section(subsection)
968 END SUBROUTINE create_dipole_section
975 SUBROUTINE create_damping_section(section)
980 cpassert(.NOT.
ASSOCIATED(section))
982 description=
"This section specifies optional electric field damping for the polarizable atoms. ", &
983 n_keywords=4, n_subsections=0, repeats=.true.)
988 description=
"Defines the atomic kind for this damping function.", &
989 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
995 description=
"Defines the damping type.", &
996 usage=
"TYPE {string}", type_of_var=
char_t, &
997 n_var=1, default_c_val=
"TANG-TOENNIES")
1002 description=
"Defines the order for this damping.", &
1003 usage=
"ORDER {integer}", type_of_var=
integer_t, &
1004 n_var=1, default_i_val=3)
1009 description=
"Defines the BIJ parameter for this damping.", &
1010 usage=
"BIJ {real}", type_of_var=
real_t, &
1011 n_var=1, unit_str=
'angstrom^-1')
1016 description=
"Defines the CIJ parameter for this damping.", &
1017 usage=
"CIJ {real}", type_of_var=
real_t, &
1018 n_var=1, unit_str=
'')
1022 END SUBROUTINE create_damping_section
1029 SUBROUTINE create_shell_section(section)
1034 cpassert(.NOT.
ASSOCIATED(section))
1036 description=
"This section specifies the parameters for shell-model potentials", &
1037 n_keywords=6, n_subsections=0, repeats=.true., &
1042 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1043 description=
"The kind for which the shell potential parameters are given ", &
1044 usage=
"H", default_c_val=
"DEFAULT")
1049 variants=[
"CORE"], &
1050 description=
"Partial charge assigned to the core (electron charge units)", &
1051 usage=
"CORE_CHARGE {real}", &
1052 default_r_val=0.0_dp)
1056 CALL keyword_create(keyword, __location__, name=
"SHELL_CHARGE", &
1057 variants=[
"SHELL"], &
1058 description=
"Partial charge assigned to the shell (electron charge units)", &
1059 usage=
"SHELL_CHARGE {real}", &
1060 default_r_val=0.0_dp)
1064 CALL keyword_create(keyword, __location__, name=
"MASS_FRACTION", &
1065 variants=[
"MASS"], &
1066 description=
"Fraction of the mass of the atom to be assigned to the shell", &
1067 usage=
"MASS_FRACTION {real}", &
1068 default_r_val=0.1_dp)
1073 variants=
s2a(
"K2",
"SPRING"), &
1074 description=
"Force constant k2 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// &
1075 "binding a core-shell pair when a core-shell potential is employed.", &
1077 usage=
"K2_SPRING {real}", &
1078 default_r_val=-1.0_dp, &
1079 unit_str=
"hartree*bohr^-2")
1084 variants=
s2a(
"K4"), &
1085 description=
"Force constant k4 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// &
1086 "binding a core-shell pair when a core-shell potential is employed. "// &
1087 "By default a harmonic spring potential is used, i.e. k4 is zero.", &
1089 usage=
"K4_SPRING {real}", &
1090 default_r_val=0.0_dp, &
1091 unit_str=
"hartree*bohr^-4")
1095 CALL keyword_create(keyword, __location__, name=
"MAX_DISTANCE", &
1096 description=
"Assign a maximum elongation of the spring, "// &
1097 "if negative no limit is imposed", &
1098 usage=
"MAX_DISTANCE 0.0", &
1099 default_r_val=-1.0_dp, &
1100 unit_str=
"angstrom")
1104 CALL keyword_create(keyword, __location__, name=
"SHELL_CUTOFF", &
1105 description=
"Define a screening function to exclude some neighbors "// &
1106 "of the shell when electrostatic interaction are considered, "// &
1107 "if negative no screening is operated", &
1108 usage=
"SHELL_CUTOFF -1.0", &
1109 default_r_val=-1.0_dp, &
1110 unit_str=
"angstrom")
1114 END SUBROUTINE create_shell_section
1127 cpassert(.NOT.
ASSOCIATED(section))
1129 description=
"This section specifies the input parameters for 1-4 NON-BONDED interactions.", &
1130 n_keywords=1, n_subsections=0, repeats=.false.)
1132 NULLIFY (subsection)
1157 SUBROUTINE create_nonbonded_section(section)
1162 cpassert(.NOT.
ASSOCIATED(section))
1164 description=
"This section specifies the input parameters for NON-BONDED interactions.", &
1165 n_keywords=1, n_subsections=0, repeats=.false.)
1167 NULLIFY (subsection)
1176 CALL create_eam_section(subsection)
1180 CALL create_nequip_section(subsection)
1184 CALL create_ace_section(subsection)
1188 CALL create_deepmd_section(subsection)
1196 CALL create_ipbv_section(subsection)
1200 CALL create_bmhft_section(subsection)
1204 CALL create_bmhftd_section(subsection)
1208 CALL create_buck4r_section(subsection)
1212 CALL create_buckmorse_section(subsection)
1220 CALL create_tersoff_section(subsection)
1224 CALL create_siepmann_section(subsection)
1228 CALL create_gal_section(subsection)
1232 CALL create_gal21_section(subsection)
1240 END SUBROUTINE create_nonbonded_section
1254 cpassert(.NOT.
ASSOCIATED(section))
1255 CALL section_create(section, __location__, name=
"neighbor_lists", &
1256 description=
"This section specifies the input parameters for the construction of"// &
1257 " neighbor lists.", &
1258 n_keywords=1, n_subsections=0, repeats=.false.)
1261 description=
"Defines the Verlet Skin for the generation of the neighbor lists", &
1262 usage=
"VERLET_SKIN {real}", default_r_val=
cp_unit_to_cp2k(
value=1.0_dp, &
1263 unit_str=
"angstrom"), &
1264 unit_str=
"angstrom")
1268 CALL keyword_create(keyword, __location__, name=
"neighbor_lists_from_scratch", &
1269 description=
"This keyword enables the building of the neighbouring list from scratch.", &
1270 usage=
"neighbor_lists_from_scratch logical", &
1271 default_l_val=.false., lone_keyword_l_val=.true.)
1276 description=
"This keyword enables the check that two atoms are never below the minimum"// &
1277 " value used to construct the splines during the construction of the neighbouring list."// &
1278 " Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum"// &
1279 " value of the radius used to generate the splines.", &
1280 usage=
"GEO_CHECK", &
1281 default_l_val=.true., lone_keyword_l_val=.true.)
1297 cpassert(.NOT.
ASSOCIATED(section))
1299 description=
"This section specifies the input parameters for a generic potential type. "// &
1301 n_keywords=1, n_subsections=0, repeats=.true.)
1306 description=
"Defines the atomic kind involved in the generic potential", &
1307 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1313 description=
"Specifies the functional form in mathematical notation.", &
1314 usage=
"FUNCTION a\*EXP(-b\*x^2)/x+D\*log10(x)", type_of_var=
lchar_t, &
1320 description=
"Defines the variable of the functional form.", &
1321 usage=
"VARIABLES x", type_of_var=
char_t, &
1327 description=
"Defines the parameters of the functional form", &
1328 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
1329 n_var=-1, repeats=.true.)
1334 description=
"Defines the values of parameter of the functional form", &
1335 usage=
"VALUES ", type_of_var=
real_t, &
1336 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
1341 description=
"Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1342 "It is assumed that the corresponding parameter value is specified in this unit.", &
1343 usage=
"UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=
char_t, &
1344 n_var=-1, repeats=.true.)
1349 description=
"Defines the cutoff parameter of the generic potential", &
1351 unit_str=
"angstrom"), &
1352 unit_str=
"angstrom")
1357 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1358 " full range generate by the spline", usage=
"RMIN {real}", &
1359 type_of_var=
real_t, unit_str=
"angstrom")
1364 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1365 " full range generate by the spline", usage=
"RMAX {real}", &
1366 type_of_var=
real_t, unit_str=
"angstrom")
1377 SUBROUTINE create_eam_section(section)
1382 cpassert(.NOT.
ASSOCIATED(section))
1384 description=
"This section specifies the input parameters for EAM potential type.", &
1385 citations=[
foiles1986], n_keywords=1, n_subsections=0, repeats=.true.)
1390 description=
"Defines the atomic kind involved in the nonbond potential", &
1391 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1396 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
1397 variants=[
"PARMFILE"], &
1398 description=
"Specifies the filename that contains the tabulated EAM potential. "// &
1399 "File structure: the first line of the potential file contains a title. "// &
1400 "The second line contains: atomic number, mass and lattice constant. "// &
1401 "These information are parsed but not used in CP2K. The third line contains: "// &
1402 "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// &
1403 "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// &
1404 "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// &
1405 "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// &
1406 "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// &
1407 "and its derivative [ev*au_c^-1].", &
1408 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
" ")
1412 END SUBROUTINE create_eam_section
1419 SUBROUTINE create_nequip_section(section)
1424 cpassert(.NOT.
ASSOCIATED(section))
1426 description=
"This section specifies the input parameters for NEQUIP potential type "// &
1427 "based on equivariant neural networks, and for ALLEGRO, a local large-scale variant. "// &
1428 "Note: To enable the prediction of stress, along with energies and forces, the keyword "// &
1429 "StressForceOutput must be included in the nequip config *.yaml file used to train the "// &
1430 "model, regardless of whether the model has been trained on the stress. "// &
1431 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1437 description=
"Defines the atomic kinds involved in the NEQUIP potential. "// &
1438 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1439 "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1440 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1441 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1447 variants=[
"MODEL"], &
1448 description=
"Specifies the type of model used. Allowed values are NEQUIP or ALLEGRO.", &
1449 usage=
"MODEL_TYPE {NEQUIP}", default_lc_val=
" ")
1453 CALL keyword_create(keyword, __location__, name=
"POT_FILE_NAME", &
1454 variants=[
"MODEL_FILE_NAME"], &
1455 description=
"Specifies the filename that contains the NEQUIP model.", &
1456 usage=
"POT_FILE_NAME {FILENAME}", default_lc_val=
" ")
1461 description=
"Units of length in the NEQUIP model.pth file. "// &
1462 "The units of positions, cell, energies and forces must be self-consistent: "// &
1463 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1464 usage=
"UNIT_LENGTH angstrom", default_c_val=
"angstrom")
1469 description=
"Units of energy in the NEQUIP model.pth file. "// &
1470 "The units of positions, energies and forces must be self-consistent: "// &
1471 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1472 usage=
"UNIT_ENERGY hartree", default_c_val=
"eV")
1477 description=
"Units of the forces in the NEQUIP model.pth file. "// &
1478 "The units of positions, energies and forces must be self-consistent: "// &
1479 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1480 usage=
"UNIT_FORCES hartree/bohr", default_c_val=
"eV/Angstrom")
1484 END SUBROUTINE create_nequip_section
1491 SUBROUTINE create_ace_section(section)
1497 description=
"This section specifies the input parameters for Atomic Cluster Expansion type. "// &
1498 "Mainly intended for accurate representation of "// &
1499 "potential energy surfaces. "// &
1500 "Requires linking with ACE library from "// &
1501 "<a href=""https://github.com/ICAMS/lammps-user-pace"" "// &
1502 "target=""_blank"">https://github.com/ICAMS/lammps-user-pace</a> .", &
1504 n_keywords=1, n_subsections=0, repeats=.false.)
1508 description=
"Defines the atomic species. "// &
1509 "Provide a list of each element, "// &
1510 "making sure that the mapping from the ATOMS list to ACE atom types is correct.", &
1511 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1515 CALL keyword_create(keyword, __location__, name=
"POT_FILE_NAME", &
1516 variants=[
"PARMFILE"], &
1517 description=
"Specifies the filename that contains the ACE potential parameters.", &
1518 usage=
"POT_FILE_NAME {FILENAME}", default_lc_val=
"test.yaml")
1521 END SUBROUTINE create_ace_section
1528 SUBROUTINE create_deepmd_section(section)
1534 description=
"This section specifies the input parameters for Deep Potential type. "// &
1535 "Mainly intended for things like neural network to DFT "// &
1536 "to achieve correlated-wavefunction-like accuracy. "// &
1537 "Requires linking with DeePMD-kit library from "// &
1538 "<a href=""https://docs.deepmodeling.com/projects/deepmd/en/master"" "// &
1539 "target=""_blank"">https://docs.deepmodeling.com/projects/deepmd/en/master</a> .", &
1540 citations=[
wang2018,
zeng2023], n_keywords=1, n_subsections=0, repeats=.false.)
1543 description=
"Defines the atomic kinds involved in the Deep Potential. "// &
1544 "Provide a list of each element, "// &
1545 "making sure that the mapping from the ATOMS list to DeePMD atom types is correct.", &
1546 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1550 CALL keyword_create(keyword, __location__, name=
"POT_FILE_NAME", &
1551 variants=[
"PARMFILE"], &
1552 description=
"Specifies the filename that contains the DeePMD-kit potential.", &
1553 usage=
"POT_FILE_NAME {FILENAME}", default_lc_val=
"graph.pb")
1556 CALL keyword_create(keyword, __location__, name=
"ATOMS_DEEPMD_TYPE", &
1557 description=
"Specifies the atomic TYPE for the DeePMD-kit potential. "// &
1558 "Provide a list of index, making sure that the mapping "// &
1559 "from the ATOMS list to DeePMD atom types is correct. ", &
1560 usage=
"ATOMS_DEEPMD_TYPE {TYPE INTEGER 1} {TYPE INTEGER 2} .. "// &
1561 "{TYPE INTEGER N}", type_of_var=
integer_t, &
1565 END SUBROUTINE create_deepmd_section
1577 cpassert(.NOT.
ASSOCIATED(section))
1578 CALL section_create(section, __location__, name=
"lennard-jones", &
1579 description=
"This section specifies the input parameters for LENNARD-JONES potential type. "// &
1580 "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", &
1581 n_keywords=1, n_subsections=0, repeats=.true.)
1586 description=
"Defines the atomic kind involved in the nonbond potential", &
1587 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1593 description=
"Defines the EPSILON parameter of the LJ potential", &
1594 usage=
"EPSILON {real}", type_of_var=
real_t, &
1595 n_var=1, unit_str=
"K_e")
1600 description=
"Defines the SIGMA parameter of the LJ potential", &
1601 usage=
"SIGMA {real}", type_of_var=
real_t, &
1602 n_var=1, unit_str=
"angstrom")
1607 description=
"Defines the cutoff parameter of the LJ potential", &
1609 unit_str=
"angstrom"), &
1610 unit_str=
"angstrom")
1615 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1616 " full range generate by the spline", usage=
"RMIN {real}", &
1617 type_of_var=
real_t, unit_str=
"angstrom")
1622 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1623 " full range generate by the spline", usage=
"RMAX {real}", &
1624 type_of_var=
real_t, unit_str=
"angstrom")
1640 cpassert(.NOT.
ASSOCIATED(section))
1642 description=
"This section specifies the input parameters for WILLIAMS potential type. "// &
1643 "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", &
1644 n_keywords=1, n_subsections=0, repeats=.true.)
1649 description=
"Defines the atomic kind involved in the nonbond potential", &
1650 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1656 description=
"Defines the A parameter of the Williams potential", &
1657 usage=
"A {real}", type_of_var=
real_t, &
1658 n_var=1, unit_str=
"K_e")
1663 description=
"Defines the B parameter of the Williams potential", &
1664 usage=
"B {real}", type_of_var=
real_t, &
1665 n_var=1, unit_str=
"angstrom^-1")
1670 description=
"Defines the C parameter of the Williams potential", &
1671 usage=
"C {real}", type_of_var=
real_t, &
1672 n_var=1, unit_str=
"K_e*angstrom^6")
1677 description=
"Defines the cutoff parameter of the Williams potential", &
1679 unit_str=
"angstrom"), &
1680 unit_str=
"angstrom")
1685 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1686 " full range generate by the spline", usage=
"RMIN {real}", &
1687 type_of_var=
real_t, unit_str=
"angstrom")
1692 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1693 " full range generate by the spline", usage=
"RMAX {real}", &
1694 type_of_var=
real_t, unit_str=
"angstrom")
1710 cpassert(.NOT.
ASSOCIATED(section))
1712 description=
"This section specifies the input parameters for GOODWIN potential type. "// &
1713 "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", &
1714 n_keywords=1, n_subsections=0, repeats=.true.)
1718 description=
"Defines the atomic kind involved in the nonbond potential", &
1719 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1725 description=
"Defines the VR0 parameter of the Goodwin potential", &
1726 usage=
"VR0 {real}", type_of_var=
real_t, &
1727 n_var=1, unit_str=
"K_e")
1732 description=
"Defines the D parameter of the Goodwin potential", &
1733 usage=
"D {real}", type_of_var=
real_t, &
1734 n_var=1, unit_str=
"angstrom")
1739 description=
"Defines the DC parameter of the Goodwin potential", &
1740 usage=
"DC {real}", type_of_var=
real_t, &
1741 n_var=1, unit_str=
"angstrom")
1746 description=
"Defines the M parameter of the Goodwin potential", &
1747 usage=
"M {real}", type_of_var=
integer_t, &
1753 description=
"Defines the MC parameter of the Goodwin potential", &
1754 usage=
"MC {real}", type_of_var=
integer_t, &
1760 description=
"Defines the cutoff parameter of the Goodwin potential", &
1762 unit_str=
"angstrom"), &
1763 unit_str=
"angstrom")
1768 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1769 " full range generate by the spline", usage=
"RMIN {real}", &
1770 type_of_var=
real_t, unit_str=
"angstrom")
1775 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1776 " full range generate by the spline", usage=
"RMAX {real}", &
1777 type_of_var=
real_t, unit_str=
"angstrom")
1788 SUBROUTINE create_ipbv_section(section)
1793 cpassert(.NOT.
ASSOCIATED(section))
1795 description=
"This section specifies the input parameters for IPBV potential type. "// &
1796 "Functional form: Implicit table function.", &
1797 n_keywords=1, n_subsections=0, repeats=.true.)
1802 description=
"Defines the atomic kind involved in the IPBV nonbond potential", &
1803 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1809 description=
"Defines the cutoff parameter of the IPBV potential", &
1811 unit_str=
"angstrom"), &
1812 unit_str=
"angstrom")
1817 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1818 " full range generate by the spline", usage=
"RMIN {real}", &
1819 type_of_var=
real_t, unit_str=
"angstrom")
1824 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1825 " full range generate by the spline", usage=
"RMAX {real}", &
1826 type_of_var=
real_t, unit_str=
"angstrom")
1830 END SUBROUTINE create_ipbv_section
1837 SUBROUTINE create_bmhft_section(section)
1842 cpassert(.NOT.
ASSOCIATED(section))
1844 description=
"This section specifies the input parameters for BMHFT potential type. "// &
1845 "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8. "// &
1846 "Values available inside cp2k only for the Na/Cl pair.", &
1852 description=
"Defines the atomic kind involved in the BMHFT nonbond potential", &
1853 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1859 description=
"Defines the kinds for which internally is defined the BMHFT nonbond potential"// &
1860 " at the moment only Na and Cl.", &
1861 usage=
"MAP_ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1867 description=
"Defines the cutoff parameter of the BMHFT potential", &
1868 usage=
"RCUT {real}", default_r_val=7.8_dp, &
1869 unit_str=
"angstrom")
1874 description=
"Defines the A parameter of the Fumi-Tosi Potential", &
1875 usage=
"A {real}", type_of_var=
real_t, &
1876 n_var=1, unit_str=
"hartree")
1881 description=
"Defines the B parameter of the Fumi-Tosi Potential", &
1882 usage=
"B {real}", type_of_var=
real_t, &
1883 n_var=1, unit_str=
"angstrom^-1")
1888 description=
"Defines the C parameter of the Fumi-Tosi Potential", &
1889 usage=
"C {real}", type_of_var=
real_t, &
1890 n_var=1, unit_str=
"hartree*angstrom^6")
1895 description=
"Defines the D parameter of the Fumi-Tosi Potential", &
1896 usage=
"D {real}", type_of_var=
real_t, &
1897 n_var=1, unit_str=
"hartree*angstrom^8")
1902 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1903 " full range generate by the spline", usage=
"RMIN {real}", &
1904 type_of_var=
real_t, unit_str=
"angstrom")
1909 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1910 " full range generate by the spline", usage=
"RMAX {real}", &
1911 type_of_var=
real_t, unit_str=
"angstrom")
1915 END SUBROUTINE create_bmhft_section
1924 SUBROUTINE create_bmhftd_section(section)
1929 cpassert(.NOT.
ASSOCIATED(section))
1931 description=
"This section specifies the input parameters for the BMHFTD potential type. "// &
1932 "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8 "// &
1933 "where f_order(r) = 1 - exp(-BD*r)*\sum_{k=0}^order (BD*r)^k/k! "// &
1934 "(Tang-Toennies damping function). No pre-defined parameter values are available.", &
1940 description=
"Defines the atomic kind involved in the BMHFTD nonbond potential", &
1941 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1947 description=
"Defines the kinds for which internally is defined the BMHFTD nonbond potential"// &
1948 " at the moment no species included.", &
1949 usage=
"MAP_ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1955 description=
"Defines the cutoff parameter of the BMHFTD potential", &
1956 usage=
"RCUT {real}", default_r_val=7.8_dp, &
1957 unit_str=
"angstrom")
1962 description=
"Defines the A parameter of the dispersion-damped Fumi-Tosi potential", &
1963 usage=
"A {real}", type_of_var=
real_t, &
1964 n_var=1, unit_str=
"hartree")
1969 description=
"Defines the B parameter of the dispersion-damped Fumi-Tosi potential", &
1970 usage=
"B {real}", type_of_var=
real_t, &
1971 n_var=1, unit_str=
"angstrom^-1")
1976 description=
"Defines the C parameter of the dispersion-damped Fumi-Tosi potential", &
1977 usage=
"C {real}", type_of_var=
real_t, &
1978 n_var=1, unit_str=
"hartree*angstrom^6")
1983 description=
"Defines the D parameter of the dispersion-damped Fumi-Tosi potential", &
1984 usage=
"D {real}", type_of_var=
real_t, &
1985 n_var=1, unit_str=
"hartree*angstrom^8")
1990 description=
"Defines the BD parameters of the dispersion-damped Fumi-Tosi potential. "// &
1991 "One or two parameter values are expected. If only one value is provided, then this "// &
1992 "value will be used both for the 6th and the 8th order term.", &
1993 usage=
"BD {real} {real}", type_of_var=
real_t, &
1994 n_var=-1, unit_str=
"angstrom^-1")
1999 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2000 " full range generate by the spline", usage=
"RMIN {real}", &
2001 type_of_var=
real_t, unit_str=
"angstrom")
2006 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2007 " full range generate by the spline", usage=
"RMAX {real}", &
2008 type_of_var=
real_t, unit_str=
"angstrom")
2012 END SUBROUTINE create_bmhftd_section
2019 SUBROUTINE create_buck4r_section(section)
2024 cpassert(.NOT.
ASSOCIATED(section))
2026 description=
"This section specifies the input parameters for the Buckingham 4-ranges"// &
2027 " potential type."//
newline// &
2028 "| Range | Functional Form |"//
newline// &
2029 "| ----- | --------------- |"//
newline// &
2030 "| $ r < r_1 $ | $ V(r) = A\exp(-Br) $ |"//
newline// &
2031 "| $ r_1 \leq r < r_2 $ | $ V(r) = \sum_n \operatorname{POLY1}(n)r_n $ |"//
newline// &
2032 "| $ r_2 \leq r < r_3 $ | $ V(r) = \sum_n \operatorname{POLY2}(n)r_n $ |"//
newline// &
2033 "| $ r \geq r_3 $ | $ V(r) = -C/r_6 $ |"//
newline, &
2034 n_keywords=1, n_subsections=0, repeats=.true.)
2039 description=
"Defines the atomic kind involved in the nonbond potential", &
2040 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2046 description=
"Defines the A parameter of the Buckingham potential", &
2047 usage=
"A {real}", type_of_var=
real_t, &
2048 n_var=1, unit_str=
"K_e")
2053 description=
"Defines the B parameter of the Buckingham potential", &
2054 usage=
"B {real}", type_of_var=
real_t, &
2055 n_var=1, unit_str=
"angstrom^-1")
2060 description=
"Defines the C parameter of the Buckingham potential", &
2061 usage=
"C {real}", type_of_var=
real_t, &
2062 n_var=1, unit_str=
"K_e*angstrom^6")
2067 description=
"Defines the upper bound of the first range ", &
2068 usage=
"R1 {real}", type_of_var=
real_t, &
2069 n_var=1, unit_str=
"angstrom")
2074 description=
"Defines the upper bound of the second range ", &
2075 usage=
"R2 {real}", type_of_var=
real_t, &
2076 n_var=1, unit_str=
"angstrom")
2081 description=
"Defines the upper bound of the third range ", &
2082 usage=
"R3 {real}", type_of_var=
real_t, &
2083 n_var=1, unit_str=
"angstrom")
2088 description=
"Coefficients of the polynomial used in the second range "// &
2089 "This keyword can be repeated several times.", &
2090 usage=
"POLY1 C1 C2 C3 ..", &
2091 n_var=-1, unit_str=
"K_e", type_of_var=
real_t, repeats=.true.)
2096 description=
"Coefficients of the polynomial used in the third range "// &
2097 "This keyword can be repeated several times.", &
2098 usage=
"POLY2 C1 C2 C3 ..", &
2099 n_var=-1, unit_str=
"K_e", type_of_var=
real_t, repeats=.true.)
2104 description=
"Defines the cutoff parameter of the Buckingham potential", &
2106 unit_str=
"angstrom"), &
2107 unit_str=
"angstrom")
2112 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2113 " full range generate by the spline", usage=
"RMIN {real}", &
2114 type_of_var=
real_t, unit_str=
"angstrom")
2119 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2120 " full range generate by the spline", usage=
"RMAX {real}", &
2121 type_of_var=
real_t, unit_str=
"angstrom")
2125 END SUBROUTINE create_buck4r_section
2132 SUBROUTINE create_buckmorse_section(section)
2137 cpassert(.NOT.
ASSOCIATED(section))
2139 section, __location__, name=
"BUCKMORSE", &
2140 description=
"This section specifies the input parameters for"// &
2141 " Buckingham plus Morse potential type"// &
2142 " Functional Form: V(r) = F0*(B1+B2)*EXP([A1+A2-r]/[B1+B2])-C/r^6+D*{EXP[-2*beta*(r-R0)]-2*EXP[-beta*(r-R0)]}.", &
2143 citations=[
yamada2000], n_keywords=1, n_subsections=0, repeats=.true.)
2148 description=
"Defines the atomic kind involved in the nonbond potential", &
2149 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2155 description=
"Defines the f0 parameter of Buckingham+Morse potential", &
2156 usage=
"F0 {real}", type_of_var=
real_t, &
2157 n_var=1, unit_str=
"K_e*angstrom^-1")
2162 description=
"Defines the A1 parameter of Buckingham+Morse potential", &
2163 usage=
"A1 {real}", type_of_var=
real_t, &
2164 n_var=1, unit_str=
"angstrom")
2169 description=
"Defines the A2 parameter of Buckingham+Morse potential", &
2170 usage=
"A2 {real}", type_of_var=
real_t, &
2171 n_var=1, unit_str=
"angstrom")
2176 description=
"Defines the B1 parameter of Buckingham+Morse potential", &
2177 usage=
"B1 {real}", type_of_var=
real_t, &
2178 n_var=1, unit_str=
"angstrom")
2183 description=
"Defines the B2 parameter of Buckingham+Morse potential", &
2184 usage=
"B2 {real}", type_of_var=
real_t, &
2185 n_var=1, unit_str=
"angstrom")
2190 description=
"Defines the C parameter of Buckingham+Morse potential", &
2191 usage=
"C {real}", type_of_var=
real_t, &
2192 n_var=1, unit_str=
"K_e*angstrom^6")
2197 description=
"Defines the amplitude for the Morse part ", &
2198 usage=
"D {real}", type_of_var=
real_t, &
2199 n_var=1, unit_str=
"K_e")
2204 description=
"Defines the equilibrium distance for the Morse part ", &
2205 usage=
"R0 {real}", type_of_var=
real_t, &
2206 n_var=1, unit_str=
"angstrom")
2211 description=
"Defines the width for the Morse part ", &
2212 usage=
"Beta {real}", type_of_var=
real_t, &
2213 n_var=1, unit_str=
"angstrom^-1")
2218 description=
"Defines the cutoff parameter of the Buckingham potential", &
2220 unit_str=
"angstrom"), &
2221 unit_str=
"angstrom")
2226 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2227 " full range generate by the spline", usage=
"RMIN {real}", &
2228 type_of_var=
real_t, unit_str=
"angstrom")
2233 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2234 " full range generate by the spline", usage=
"RMAX {real}", &
2235 type_of_var=
real_t, unit_str=
"angstrom")
2239 END SUBROUTINE create_buckmorse_section
2246 SUBROUTINE create_tersoff_section(section)
2251 cpassert(.NOT.
ASSOCIATED(section))
2253 description=
"This section specifies the input parameters for Tersoff potential type.", &
2254 citations=[
tersoff1988], n_keywords=1, n_subsections=0, repeats=.true.)
2259 description=
"Defines the atomic kind involved in the nonbond potential", &
2260 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2266 description=
"Defines the A parameter of Tersoff potential", &
2267 usage=
"A {real}", type_of_var=
real_t, &
2270 n_var=1, unit_str=
"eV")
2275 description=
"Defines the B parameter of Tersoff potential", &
2276 usage=
"B {real}", type_of_var=
real_t, &
2279 n_var=1, unit_str=
"eV")
2284 description=
"Defines the lambda1 parameter of Tersoff potential", &
2285 usage=
"lambda1 {real}", type_of_var=
real_t, &
2287 unit_str=
"angstrom^-1"), &
2288 n_var=1, unit_str=
"angstrom^-1")
2293 description=
"Defines the lambda2 parameter of Tersoff potential", &
2294 usage=
"lambda2 {real}", type_of_var=
real_t, &
2296 unit_str=
"angstrom^-1"), &
2297 n_var=1, unit_str=
"angstrom^-1")
2302 description=
"Defines the alpha parameter of Tersoff potential", &
2303 usage=
"alpha {real}", type_of_var=
real_t, &
2304 default_r_val=0.0_dp, &
2310 description=
"Defines the beta parameter of Tersoff potential", &
2311 usage=
"beta {real}", type_of_var=
real_t, &
2312 default_r_val=1.0999e-6_dp, &
2313 n_var=1, unit_str=
"")
2318 description=
"Defines the n parameter of Tersoff potential", &
2319 usage=
"n {real}", type_of_var=
real_t, &
2320 default_r_val=7.8734e-1_dp, &
2321 n_var=1, unit_str=
"")
2326 description=
"Defines the c parameter of Tersoff potential", &
2327 usage=
"c {real}", type_of_var=
real_t, &
2328 default_r_val=1.0039e5_dp, &
2329 n_var=1, unit_str=
"")
2334 description=
"Defines the d parameter of Tersoff potential", &
2335 usage=
"d {real}", type_of_var=
real_t, &
2336 default_r_val=1.6218e1_dp, &
2337 n_var=1, unit_str=
"")
2342 description=
"Defines the h parameter of Tersoff potential", &
2343 usage=
"h {real}", type_of_var=
real_t, &
2344 default_r_val=-5.9826e-1_dp, &
2345 n_var=1, unit_str=
"")
2350 description=
"Defines the lambda3 parameter of Tersoff potential", &
2351 usage=
"lambda3 {real}", type_of_var=
real_t, &
2353 unit_str=
"angstrom^-1"), &
2354 n_var=1, unit_str=
"angstrom^-1")
2359 description=
"Defines the bigR parameter of Tersoff potential", &
2360 usage=
"bigR {real}", type_of_var=
real_t, &
2362 unit_str=
"angstrom"), &
2363 n_var=1, unit_str=
"angstrom")
2368 description=
"Defines the D parameter of Tersoff potential", &
2369 usage=
"bigD {real}", type_of_var=
real_t, &
2371 unit_str=
"angstrom"), &
2372 n_var=1, unit_str=
"angstrom")
2377 description=
"Defines the cutoff parameter of the tersoff potential."// &
2378 " This parameter is in principle already defined by the values of"// &
2379 " bigD and bigR. But it is necessary to define it when using the tersoff"// &
2380 " in conjunction with other potentials (for the same atomic pair) in order to have"// &
2381 " the same consistent definition of RCUT for all potentials.", &
2382 usage=
"RCUT {real}", type_of_var=
real_t, &
2383 n_var=1, unit_str=
"angstrom")
2387 END SUBROUTINE create_tersoff_section
2395 SUBROUTINE create_siepmann_section(section)
2400 cpassert(.NOT.
ASSOCIATED(section))
2402 description=
"This section specifies the input parameters for the"// &
2403 " Siepmann-Sprik potential type. Consists of 4 terms:"// &
2404 " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// &
2405 " have to be given via the GENPOT section. The terms T3+T4"// &
2406 " are obtained from the SIEPMANN section. The Siepmann-Sprik"// &
2407 " potential is designed for water-metal chemisorption.", &
2408 citations=[
siepmann1995], n_keywords=1, n_subsections=0, repeats=.true.)
2413 description=
"Defines the atomic kind involved in the nonbond potential", &
2414 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2420 description=
"Defines the B parameter of Siepmann potential", &
2421 usage=
"B {real}", type_of_var=
real_t, &
2423 unit_str=
"angstrom"), &
2424 n_var=1, unit_str=
"angstrom")
2429 description=
"Defines the D parameter of Siepmann potential", &
2430 usage=
"D {real}", type_of_var=
real_t, &
2432 unit_str=
"internal_cp2k"), &
2433 n_var=1, unit_str=
"internal_cp2k")
2438 description=
"Defines the E parameter of Siepmann potential", &
2439 usage=
"E {real}", type_of_var=
real_t, &
2441 unit_str=
"internal_cp2k"), &
2442 n_var=1, unit_str=
"internal_cp2k")
2447 description=
"Defines the F parameter of Siepmann potential", &
2448 usage=
"F {real}", type_of_var=
real_t, &
2449 default_r_val=13.3_dp, n_var=1)
2454 description=
"Defines the beta parameter of Siepmann potential", &
2455 usage=
"beta {real}", type_of_var=
real_t, &
2456 default_r_val=10.0_dp, n_var=1)
2461 description=
"Defines the cutoff parameter of Siepmann potential", &
2462 usage=
"RCUT {real}", type_of_var=
real_t, &
2464 unit_str=
"angstrom"), &
2465 n_var=1, unit_str=
"angstrom")
2469 CALL keyword_create(keyword, __location__, name=
"ALLOW_OH_FORMATION", &
2470 description=
" The Siepmann-Sprik potential is actually designed for intact"// &
2471 " water molecules only. If water is treated at the QM level,"// &
2472 " water molecules can potentially dissociate, i.e."// &
2473 " some O-H bonds might be stretched leading temporarily"// &
2474 " to the formation of OH- ions. This keyword allows the"// &
2475 " the formation of such ions. The T3 term (dipole term)"// &
2476 " is then switched off for evaluating the interaction"// &
2477 " between the OH- ion and the metal.", &
2478 usage=
"ALLOW_OH_FORMATION TRUE", &
2479 default_l_val=.false., lone_keyword_l_val=.true.)
2483 CALL keyword_create(keyword, __location__, name=
"ALLOW_H3O_FORMATION", &
2484 description=
" The Siepmann-Sprik potential is designed for intact water"// &
2485 " molecules only. If water is treated at the QM level"// &
2486 " and an acid is present, hydronium ions might occur."// &
2487 " This keyword allows the formation of hydronium ions."// &
2488 " The T3 term (dipole term) is switched off for evaluating"// &
2489 " the interaction between hydronium and the metal.", &
2490 usage=
"ALLOW_H3O_FORMATION TRUE", &
2491 default_l_val=.false., lone_keyword_l_val=.true.)
2495 CALL keyword_create(keyword, __location__, name=
"ALLOW_O_FORMATION", &
2496 description=
" The Siepmann-Sprik potential is actually designed for intact"// &
2497 " water molecules only. If water is treated at the QM level,"// &
2498 " water molecules can potentially dissociate, i.e."// &
2499 " some O-H bonds might be stretched leading temporarily"// &
2500 " to the formation of O^2- ions. This keyword allows the"// &
2501 " the formation of such ions. The T3 term (dipole term)"// &
2502 " is then switched off for evaluating the interaction"// &
2503 " between the O^2- ion and the metal.", &
2504 usage=
"ALLOW_O_FORMATION .TRUE.", &
2505 default_l_val=.false., lone_keyword_l_val=.true.)
2509 END SUBROUTINE create_siepmann_section
2517 SUBROUTINE create_gal_section(section)
2523 cpassert(.NOT.
ASSOCIATED(section))
2525 description=
"Implementation of the GAL19 forcefield, see associated paper", &
2526 citations=[
clabaut2020], n_keywords=1, n_subsections=1, repeats=.true.)
2528 NULLIFY (keyword, subsection)
2531 description=
"Defines the atomic kind involved in the nonbond potential", &
2532 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2538 description=
"Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2539 usage=
"METALS {KIND1} {KIND2} ..", type_of_var=
char_t, &
2545 description=
"Defines the epsilon_a parameter of GAL19 potential", &
2546 usage=
"epsilon {real}", type_of_var=
real_t, &
2548 unit_str=
"kcalmol"), &
2549 n_var=1, unit_str=
"kcalmol")
2554 description=
"Defines the b perpendicular parameter of GAL19 potential", &
2555 usage=
"bxy {real}", type_of_var=
real_t, &
2557 unit_str=
"internal_cp2k"), &
2558 n_var=1, unit_str=
"angstrom^-2")
2563 description=
"Defines the b parallel parameter of GAL19 potential", &
2564 usage=
"bz {real}", type_of_var=
real_t, &
2566 unit_str=
"internal_cp2k"), &
2567 n_var=1, unit_str=
"angstrom^-2")
2572 description=
"Defines the R_0 parameters of GAL19 potential for the two METALS. "// &
2573 "This is the only parameter that is shared between the two section of the "// &
2574 "forcefield in the case of two metals (alloy). "// &
2575 "If one metal only is present, a second number should be given but won't be read", &
2576 usage=
"r {real} {real}", type_of_var=
real_t, n_var=2, unit_str=
"angstrom")
2581 description=
"Defines the a1 parameter of GAL19 potential", &
2582 usage=
"a1 {real}", type_of_var=
real_t, &
2583 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2588 description=
"Defines the a2 parameter of GAL19 potential", &
2589 usage=
"a2 {real}", type_of_var=
real_t, &
2590 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2595 description=
"Defines the a3 parameter of GAL19 potential", &
2596 usage=
"a3 {real}", type_of_var=
real_t, &
2597 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2602 description=
"Defines the a4 parameter of GAL19 potential", &
2603 usage=
"a4 {real}", type_of_var=
real_t, &
2604 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2609 description=
"Defines the A parameter of GAL19 potential", &
2610 usage=
"A {real}", type_of_var=
real_t, &
2611 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2616 description=
"Defines the B parameter of GAL19 potential", &
2617 usage=
"B {real}", type_of_var=
real_t, &
2618 default_r_val=10.0_dp, n_var=1, unit_str=
"angstrom^-1")
2623 description=
"Defines the C parameter of GAL19 potential", &
2624 usage=
"C {real}", type_of_var=
real_t, &
2625 default_r_val=10.0_dp, n_var=1, unit_str=
"angstrom^6*kcalmol")
2630 description=
"Defines the cutoff parameter of GAL19 potential", &
2631 usage=
"RCUT {real}", type_of_var=
real_t, &
2633 unit_str=
"angstrom"), &
2634 n_var=1, unit_str=
"angstrom")
2638 description=
"Demands the particular output needed to a least square fit", &
2639 usage=
"Fit_express TRUE", &
2640 default_l_val=.false., lone_keyword_l_val=.true.)
2643 CALL create_gcn_section(subsection)
2647 END SUBROUTINE create_gal_section
2655 SUBROUTINE create_gal21_section(section)
2661 cpassert(.NOT.
ASSOCIATED(section))
2663 description=
"Implementation of the GAL21 forcefield, see associated paper", &
2664 citations=[
clabaut2021], n_keywords=1, n_subsections=1, repeats=.true.)
2666 NULLIFY (keyword, subsection)
2669 description=
"Defines the atomic kind involved in the nonbond potential", &
2670 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2676 description=
"Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2677 usage=
"METALS {KIND1} {KIND2} ..", type_of_var=
char_t, &
2683 description=
"Defines the epsilon parameter of GAL21 potential", &
2684 usage=
"epsilon {real} {real} {real}", type_of_var=
real_t, &
2685 n_var=3, unit_str=
"kcalmol")
2690 description=
"Defines the b perpendicular parameter of GAL21 potential", &
2691 usage=
"bxy {real} {real}", type_of_var=
real_t, &
2692 n_var=2, unit_str=
"angstrom^-2")
2697 description=
"Defines the b parallel parameter of GAL21 potential", &
2698 usage=
"bz {real} {real}", type_of_var=
real_t, &
2699 n_var=2, unit_str=
"angstrom^-2")
2704 description=
"Defines the R_0 parameters of GAL21 potential for the two METALS. "// &
2705 "This is the only parameter that is shared between the two section of "// &
2706 "the forcefield in the case of two metals (alloy). "// &
2707 "If one metal only is present, a second number should be given but won't be read", &
2708 usage=
"r {real} {real}", type_of_var=
real_t, n_var=2, unit_str=
"angstrom")
2713 description=
"Defines the a1 parameter of GAL21 potential", &
2714 usage=
"a1 {real} {real} {real}", type_of_var=
real_t, &
2715 n_var=3, unit_str=
"kcalmol")
2720 description=
"Defines the a2 parameter of GAL21 potential", &
2721 usage=
"a2 {real} {real} {real}", type_of_var=
real_t, &
2722 n_var=3, unit_str=
"kcalmol")
2727 description=
"Defines the a3 parameter of GAL21 potential", &
2728 usage=
"a3 {real} {real} {real}", type_of_var=
real_t, &
2729 n_var=3, unit_str=
"kcalmol")
2734 description=
"Defines the a4 parameter of GAL21 potential", &
2735 usage=
"a4 {real} {real} {real}", type_of_var=
real_t, &
2736 n_var=3, unit_str=
"kcalmol")
2741 description=
"Defines the A parameter of GAL21 potential", &
2742 usage=
"A {real} {real}", type_of_var=
real_t, &
2743 n_var=2, unit_str=
"kcalmol")
2748 description=
"Defines the B parameter of GAL21 potential", &
2749 usage=
"B {real} {real}", type_of_var=
real_t, &
2750 n_var=2, unit_str=
"angstrom^-1")
2755 description=
"Defines the C parameter of GAL21 potential", &
2756 usage=
"C {real}", type_of_var=
real_t, &
2757 n_var=1, unit_str=
"angstrom^6*kcalmol")
2762 description=
"Defines the AH parameter of GAL21 potential", &
2763 usage=
"AH {real} {real}", type_of_var=
real_t, &
2764 n_var=2, unit_str=
"kcalmol")
2769 description=
"Defines the BH parameter of GAL21 potential", &
2770 usage=
"BH {real} {real}", type_of_var=
real_t, &
2771 n_var=2, unit_str=
"angstrom^-1")
2776 description=
"Defines the cutoff parameter of GAL21 potential", &
2777 usage=
"RCUT {real}", type_of_var=
real_t, &
2779 unit_str=
"angstrom"), &
2780 n_var=1, unit_str=
"angstrom")
2785 description=
"Demands the particular output needed to a least square fit", &
2786 usage=
"Fit_express TRUE", &
2787 default_l_val=.false., lone_keyword_l_val=.true.)
2791 CALL create_gcn_section(subsection)
2795 END SUBROUTINE create_gal21_section
2808 cpassert(.NOT.
ASSOCIATED(section))
2811 description=
"This section specifies the input parameters for TABPOT potential type.", &
2812 n_keywords=1, n_subsections=0, repeats=.true.)
2816 description=
"Defines the atomic kind involved", &
2817 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2822 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
2823 variants=[
"PARMFILE"], &
2824 description=
"Specifies the filename that contains the tabulated NONBONDED potential. "// &
2825 "File structure: the third line of the potential file contains a title. "// &
2826 "The 4th line contains: 'N', number of data points, 'R', lower bound of distance, distance cutoff. "// &
2828 "in order npoints lines for index, distance [A], energy [kcal/mol], and force [kcal/mol/A]", &
2829 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
"")
2841 SUBROUTINE create_gcn_section(section)
2846 cpassert(.NOT.
ASSOCIATED(section))
2848 description=
"Allow to specify the generalized coordination number of the atoms. "// &
2849 "Those numbers msust be generated by another program ", &
2850 n_keywords=1, n_subsections=0, repeats=.false.)
2853 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2854 description=
"Value of the GCN for the individual atom. Order MUST reflect"// &
2855 " the one specified for the geometry.", repeats=.true., usage=
"{Real}", &
2856 default_r_val=0.0_dp, type_of_var=
real_t)
2860 END SUBROUTINE create_gcn_section
2871 CHARACTER(LEN=*),
INTENT(IN) :: label
2872 INTEGER,
INTENT(IN) :: print_level
2876 cpassert(.NOT.
ASSOCIATED(print_key))
2878 description=
"Section controlling the calculation of "//trim(label)//
"."// &
2879 " Note that the result in the periodic case might be defined modulo a certain period,"// &
2880 " determined by the lattice vectors. During MD, this can lead to jumps.", &
2881 print_level=print_level, filename=
"__STD_OUT__")
2886 description=
"Use Berry phase formula (PERIODIC=T) or simple operator (PERIODIC=F). "// &
2887 "The latter normally requires that the CELL is periodic NONE.", &
2888 usage=
"PERIODIC {logical}", &
2891 default_l_val=.true., lone_keyword_l_val=.true.)
2896 variants=
s2a(
"REF"), &
2897 description=
"Define the reference point for the calculation of the electrostatic moment.", &
2898 usage=
"REFERENCE COM", &
2899 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
2900 enum_desc=
s2a(
"Use Center of Mass", &
2901 "Use Center of Atomic Charges", &
2902 "Use User Defined Point (Keyword:REF_POINT)", &
2903 "Use Origin of Coordinate System"), &
2912 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
2913 variants=
s2a(
"REF_POINT"), &
2914 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
2915 usage=
"REFERENCE_POINT x y z", &
2917 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public tosi1964b
integer, save, public drautz2019
integer, save, public lysogorskiy2021
integer, save, public tersoff1988
integer, save, public dick1958
integer, save, public foiles1986
integer, save, public devynck2012
integer, save, public tosi1964a
integer, save, public bochkarev2024
integer, save, public siepmann1995
integer, save, public zeng2023
integer, save, public yamada2000
integer, save, public tan2025
integer, save, public batzner2022
integer, save, public mitchell1993
integer, save, public musaelian2023
integer, save, public clabaut2021
integer, save, public wang2018
integer, save, public clabaut2020
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
integer, parameter, public low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public silent_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Define all structure types related to force field kinds.
integer, parameter, public do_ff_legendre
integer, parameter, public do_ff_undef
integer, parameter, public do_ff_mm4
integer, parameter, public do_ff_charmm
integer, parameter, public do_ff_mm3
integer, parameter, public do_ff_g87
integer, parameter, public do_ff_g96
integer, parameter, public do_ff_morse
integer, parameter, public do_ff_mm2
integer, parameter, public do_ff_harmonic
integer, parameter, public do_ff_amber
integer, parameter, public do_ff_mixed_bend_stretch
integer, parameter, public do_ff_cubic
integer, parameter, public do_ff_quartic
integer, parameter, public do_ff_fues
integer, parameter, public do_ff_opls
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
integer, parameter, public default_string_length
Utilities for string manipulations.
character(len=1), parameter, public newline