54 #include "./base/base_uses.f90"
59 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
60 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_mm'
76 TYPE(section_type),
POINTER :: section
78 TYPE(section_type),
POINTER :: subsection
80 cpassert(.NOT.
ASSOCIATED(section))
82 description=
"This section contains all information to run a MM calculation.", &
83 n_keywords=5, n_subsections=0, repeats=.false.)
87 CALL create_forcefield_section(subsection)
103 CALL create_print_mm_section(subsection)
114 SUBROUTINE create_print_mm_section(section)
115 TYPE(section_type),
POINTER :: section
117 TYPE(keyword_type),
POINTER :: keyword
118 TYPE(section_type),
POINTER :: print_key
120 cpassert(.NOT.
ASSOCIATED(section))
122 description=
"Section of possible print options in MM code.", &
123 n_keywords=0, n_subsections=1, repeats=.false.)
125 NULLIFY (print_key, keyword)
128 description=
"Controls the printing of derivatives.", &
134 description=
"Controls the printing of Ewald energy components during the "// &
135 "evaluation of the electrostatics.", &
145 description=
"Activates the printing of the neighbor lists.", &
151 description=
"Activates the printing of iteration info during the self-consistent "// &
152 "calculation of a polarizable forcefield.", &
158 description=
"Activates the printing of the subcells used for the "// &
159 "generation of neighbor lists.", &
165 description=
"Controls the printing of the banner of the MM program", &
171 description=
"Controls the printing of information regarding the run.", &
177 "Controls the printing of Force Field parameter file", &
183 "Controls the printing of information in the forcefield settings", &
187 description=
"if the printkey is active prints information regarding the splines"// &
188 " used in the nonbonded interactions", &
189 default_l_val=.true., lone_keyword_l_val=.true.)
194 description=
"if the printkey is active prints on separated files the splined function"// &
195 " together with the reference one. Useful to check the spline behavior.", &
196 default_l_val=.false., lone_keyword_l_val=.true.)
203 END SUBROUTINE create_print_mm_section
211 SUBROUTINE create_forcefield_section(section)
212 TYPE(section_type),
POINTER :: section
214 TYPE(keyword_type),
POINTER :: keyword
215 TYPE(section_type),
POINTER :: subsection
217 cpassert(.NOT.
ASSOCIATED(section))
219 description=
"Section specifying information regarding how to set up properly"// &
220 " a force_field for the classical calculations.", &
221 n_keywords=2, n_subsections=2, repeats=.false.)
223 NULLIFY (subsection, keyword)
226 keyword, __location__, name=
"PARMTYPE", &
227 description=
"Define the kind of torsion potential", &
228 usage=
"PARMTYPE {OFF,CHM,G87,G96}", &
229 enum_c_vals=s2a(
"OFF",
"CHM",
"G87",
"G96",
"AMBER"), &
230 enum_desc=s2a(
"Provides force field parameters through the input file", &
231 "Provides force field parameters through an external file with CHARMM format", &
232 "Provides force field parameters through an external file with GROMOS 87 format", &
233 "Provides force field parameters through an external file with GROMOS 96 format", &
234 "Provides force field parameters through an external file with AMBER format (from v.8 on)"), &
244 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
245 description=
"Specifies the filename that contains the parameters of the FF.", &
246 usage=
"PARM_FILE_NAME {FILENAME}", type_of_var=
lchar_t)
251 description=
"Scaling factor for the VDW 1-4 ", &
252 usage=
"VDW_SCALE14 1.0", default_r_val=1.0_dp)
257 description=
"Scaling factor for the electrostatics 1-4 ", &
258 usage=
"EI_SCALE14 1.0", default_r_val=0.0_dp)
263 description=
"Add a constant energy shift to the real-space "// &
264 "non-bonding interactions (both Van der Waals and "// &
265 "electrostatic) such that the energy at the cutoff radius is "// &
266 "zero. This makes the non-bonding interactions continuous at "// &
268 usage=
"SHIFT_CUTOFF <LOGICAL>", default_l_val=.true.)
273 description=
"Controls the computation of all the real-space "// &
274 "(short-range) nonbonded interactions. This also "// &
275 "includes the real-space corrections for excluded "// &
276 "or scaled 1-2, 1-3 and 1-4 interactions. When set "// &
277 "to F, the neighborlists are not created and all "// &
278 "interactions that depend on them are not computed.", &
279 usage=
"DO_NONBONDED T", default_l_val=.true., lone_keyword_l_val=.true.)
283 CALL keyword_create(keyword, __location__, name=
"DO_ELECTROSTATICS", &
284 description=
"Controls the computation of all the real-space "// &
285 "(short-range) electrostatics interactions. This does not "// &
286 "affect the QM/MM electrostatic coupling when turned off.", &
287 usage=
"DO_ELECTROSTATICS T", default_l_val=.true., lone_keyword_l_val=.true.)
291 CALL keyword_create(keyword, __location__, name=
"IGNORE_MISSING_CRITICAL_PARAMS", &
292 description=
"Do not abort when critical force-field parameters "// &
293 "are missing. CP2K will run as if the terms containing the "// &
294 "missing parameters are zero.", &
295 usage=
"IGNORE_MISSING_BOND_PARAMS T", default_l_val=.false., &
296 lone_keyword_l_val=.true.)
300 CALL keyword_create(keyword, __location__, name=
"MULTIPLE_POTENTIAL", &
301 description=
"Enables the possibility to define NONBONDED and NONBONDED14 as a"// &
302 " sum of different kinds of potential. Useful for piecewise defined potentials.", &
303 usage=
"MULTIPLE_POTENTIAL T", default_l_val=.false., lone_keyword_l_val=.true.)
307 CALL keyword_create(keyword, __location__, name=
"ZBL_SCATTERING", &
308 description=
"A short range repulsive potential is added, to simulate "// &
309 "collisions and scattering.", &
310 usage=
"ZBL_SCATTERING T", default_l_val=.false., lone_keyword_l_val=.true.)
317 CALL create_spline_section(subsection)
321 CALL create_nonbonded_section(subsection)
333 CALL create_charges_section(subsection)
337 CALL create_shell_section(subsection)
341 CALL create_bond_section(subsection,
"BOND")
345 CALL create_bend_section(subsection)
349 CALL create_torsion_section(subsection)
353 CALL create_improper_section(subsection)
357 CALL create_opbend_section(subsection)
361 CALL create_dipole_section(subsection)
365 CALL create_quadrupole_section(subsection)
369 END SUBROUTINE create_forcefield_section
376 SUBROUTINE create_spline_section(section)
377 TYPE(section_type),
POINTER :: section
379 TYPE(keyword_type),
POINTER :: keyword
381 cpassert(.NOT.
ASSOCIATED(section))
383 description=
"specifies parameters to set up the splines used in the"// &
384 " nonboned interactions (both pair body potential and many body potential)", &
385 n_keywords=1, n_subsections=0, repeats=.true.)
390 description=
"Specify the minimum value of the distance interval "// &
391 "that brackets the value of emax_spline.", &
399 description=
"Cutoff radius for nonbonded interactions. This value overrides"// &
400 " the value specified in the potential definition and is global for all potentials.", &
402 unit_str=
"angstrom"), &
408 description=
"Specify the maximum value of the potential up to which"// &
409 " splines will be constructed", &
410 usage=
"EMAX_SPLINE <REAL>", &
411 default_r_val=0.5_dp, unit_str=
"hartree")
415 CALL keyword_create(keyword, __location__, name=
"EMAX_ACCURACY", &
416 description=
"Specify the maximum value of energy used to check the accuracy"// &
417 " requested through EPS_SPLINE. Energy values larger than EMAX_ACCURACY"// &
418 " generally do not satisfy the requested accuracy", &
419 usage=
"EMAX_ACCURACY <REAL>", default_r_val=0.02_dp, unit_str=
"hartree")
424 description=
"Specify the threshold for the choice of the number of"// &
425 " points used in the splines (comparing the splined value with the"// &
426 " analytically evaluated one)", &
427 usage=
"EPS_SPLINE <REAL>", default_r_val=1.0e-7_dp, unit_str=
"hartree")
432 keyword, __location__, name=
"NPOINTS", &
433 description=
"Override the default search for an accurate spline by specifying a fixed number of spline points.", &
434 usage=
"NPOINTS 1024", default_i_val=-1)
438 CALL keyword_create(keyword, __location__, name=
"UNIQUE_SPLINE", &
439 description=
"For few potentials (Lennard-Jones) one global optimal spline is generated instead"// &
440 " of different optimal splines for each kind of potential", &
441 usage=
"UNIQUE_SPLINE <LOGICAL>", lone_keyword_l_val=.true., default_l_val=.false.)
445 END SUBROUTINE create_spline_section
452 SUBROUTINE create_torsion_section(section)
453 TYPE(section_type),
POINTER :: section
455 TYPE(keyword_type),
POINTER :: keyword
457 cpassert(.NOT.
ASSOCIATED(section))
459 description=
"Specifies the torsion potential of the MM system.", &
460 n_keywords=1, n_subsections=0, repeats=.true.)
464 description=
"Defines the atomic kinds involved in the tors.", &
465 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
471 description=
"Define the kind of torsion potential", &
472 usage=
"KIND CHARMM", &
473 enum_c_vals=s2a(
"CHARMM",
"G87",
"G96",
"AMBER",
"OPLS"), &
474 enum_desc=s2a(
"Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", &
475 "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: K / 2 * [ 1 + (-1)^(M-1) * cos[M*PHI]]"), &
489 description=
"Defines the force constant of the potential", &
490 usage=
"K {real}", type_of_var=
real_t, &
491 n_var=1, unit_str=
"hartree")
496 description=
"Defines the phase of the potential.", &
497 usage=
"PHI0 {real}", type_of_var=
real_t, &
498 n_var=1, unit_str=
"rad", default_r_val=0.0_dp)
503 description=
"Defines the multiplicity of the potential.", &
504 usage=
"M {integer}", type_of_var=
integer_t, &
509 END SUBROUTINE create_torsion_section
516 SUBROUTINE create_improper_section(section)
517 TYPE(section_type),
POINTER :: section
519 TYPE(keyword_type),
POINTER :: keyword
521 cpassert(.NOT.
ASSOCIATED(section))
523 description=
"Specifies the improper torsion potential of the MM system.", &
524 n_keywords=1, n_subsections=0, repeats=.true.)
528 description=
"Defines the atomic kinds involved in the improper tors.", &
529 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
535 description=
"Define the kind of improper torsion potential", &
536 usage=
"KIND CHARMM", &
537 enum_c_vals=s2a(
"CHARMM",
"G87",
"G96",
"HARMONIC"), &
538 enum_desc=s2a(
"Functional Form (CHARMM): K * [ PHI - PHI0 ]**2", &
539 "Functional Form (G87|G96|HARMONIC): 0.5 * 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"), &
551 description=
"Defines the force constant of the potential", &
552 usage=
"K {real}", type_of_var=
real_t, &
553 n_var=1, unit_str=
"hartree*rad^-2")
558 description=
"Defines the phase of the potential.", &
559 usage=
"PHI0 {real}", type_of_var=
real_t, &
560 n_var=1, unit_str=
"rad")
564 END SUBROUTINE create_improper_section
571 SUBROUTINE create_opbend_section(section)
572 TYPE(section_type),
POINTER :: section
574 TYPE(keyword_type),
POINTER :: keyword
576 cpassert(.NOT.
ASSOCIATED(section))
578 description=
"Specifies the out of plane bend potential of the MM system."// &
579 " (Only defined for atom quadruples which are also defined as an improper"// &
580 " pattern in the topology.)", &
581 n_keywords=1, n_subsections=0, repeats=.true.)
585 description=
"Defines the atomic kinds involved in the opbend.", &
586 usage=
"ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=
char_t, &
592 description=
"Define the kind of out of plane bend potential", &
593 usage=
"KIND HARMONIC", &
594 enum_c_vals=s2a(
"HARMONIC",
"MM2",
"MM3",
"MM4"), &
595 enum_desc=s2a(
"Functional Form (HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", &
596 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", &
597 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", &
598 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2"), &
608 description=
"Defines the force constant of the potential", &
609 usage=
"K {real}", type_of_var=
real_t, &
610 n_var=1, unit_str=
"hartree*rad^-2")
615 description=
"Defines the phase of the potential.", &
616 usage=
"PHI0 {real}", type_of_var=
real_t, &
617 n_var=1, unit_str=
"rad")
621 END SUBROUTINE create_opbend_section
628 SUBROUTINE create_bend_section(section)
629 TYPE(section_type),
POINTER :: section
631 TYPE(keyword_type),
POINTER :: keyword
632 TYPE(section_type),
POINTER :: subsection
634 cpassert(.NOT.
ASSOCIATED(section))
636 description=
"Specifies the bend potential of the MM system.", &
637 n_keywords=11, n_subsections=1, repeats=.true.)
639 NULLIFY (keyword, subsection)
642 description=
"Defines the atomic kinds involved in the bend.", &
643 usage=
"ATOMS {KIND1} {KIND2} {KIND3}", type_of_var=
char_t, &
649 keyword, __location__, name=
"KIND", &
650 description=
"Define the kind of bend potential", &
651 usage=
"KIND HARMONIC", &
652 enum_c_vals=s2a(
"HARMONIC",
"CHARMM",
"AMBER",
"G87",
"G96",
"CUBIC",
"MIXED_BEND_STRETCH",
"MM3", &
654 enum_desc=s2a(
"Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", &
655 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", &
656 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", &
657 "Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", &
658 "Functional Form (G96): 1/2*K*(COS(THETA)-THETA0)^2", &
659 "Functional Form (CUBIC): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))", &
660 "Functional Form (MIXED_BEND_STRETCH): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))+"// &
661 " KSS*(R12-R012)*(R32-R032)+KBS12*(R12-R012)*(THETA-THETA0)+KBS32*(R32-R032)*(THETA-THETA0)", &
662 "Functional Form (MM3): 1/2*K*(THETA-THETA0)**2*(1-0.014*(THETA-THETA0)+5.6E-5*(THETA-THETA0)**2"// &
663 " -7.0E-7*(THETA-THETA0)**3+9.0E-10*(THETA-THETA0)**4)+KBS12*(R12-R012)*(THETA-THETA0)+"// &
664 " KBS32*(R32-R032)*(THETA-THETA0)", &
665 "Functional Form (LEGENDRE): sum_{i=0}^N c_i*P_i(COS(THETA)) "), &
680 description=
"Defines the force constant of the potential", &
681 usage=
"K {real}", type_of_var=
real_t, &
682 n_var=1, unit_str=
"hartree*rad^-2")
687 description=
"Defines the the cubic force constant of the bend", &
688 usage=
"CB {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
689 n_var=1, unit_str=
"rad^-1")
694 description=
"Mixed bend stretch parameter", &
695 usage=
"R012 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
696 n_var=1, unit_str=
"bohr")
700 description=
"Mixed bend stretch parameter", &
701 usage=
"R032 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
702 n_var=1, unit_str=
"bohr")
706 description=
"Mixed bend stretch parameter", &
707 usage=
"KBS12 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
708 n_var=1, unit_str=
"hartree*bohr^-1*rad^-1")
712 description=
"Mixed bend stretch parameter", &
713 usage=
"KBS32 {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
714 n_var=1, unit_str=
"hartree*bohr^-1*rad^-1")
718 description=
"Mixed bend stretch parameter", &
719 usage=
"KSS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
720 n_var=1, unit_str=
"hartree*bohr^-2")
725 description=
"Defines the equilibrium angle.", &
726 usage=
"THETA0 {real}", type_of_var=
real_t, &
727 n_var=1, unit_str=
'rad')
732 description=
"Specifies the coefficients for the legendre"// &
733 " expansion of the bending potential."// &
734 " 'THETA0' and 'K' are not used, but need to be specified."// &
735 " Use an arbitrary value.", usage=
"LEGENDRE {REAL} {REAL} ...", &
736 default_r_val=0.0d0, type_of_var=
real_t, &
737 n_var=-1, unit_str=
"hartree")
742 CALL create_bond_section(subsection,
"UB")
746 END SUBROUTINE create_bend_section
754 SUBROUTINE create_bond_section(section, label)
755 TYPE(section_type),
POINTER :: section
756 CHARACTER(LEN=*),
INTENT(IN) :: label
758 CHARACTER(LEN=default_string_length) :: tag
759 TYPE(keyword_type),
POINTER :: keyword
761 cpassert(.NOT.
ASSOCIATED(section))
764 IF (trim(label) ==
"UB")
THEN
765 tag =
" Urey-Bradley "
767 description=
"Specifies the Urey-Bradley potential between the external atoms"// &
768 " defining the angle", &
769 n_keywords=1, n_subsections=0, repeats=.false.)
774 description=
"Specifies the bond potential", &
775 n_keywords=1, n_subsections=0, repeats=.true.)
778 description=
"Defines the atomic kinds involved in the bond.", &
779 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
786 description=
"Define the kind of"//trim(tag)//
"potential.", &
787 usage=
"KIND HARMONIC", &
788 enum_c_vals=s2a(
"HARMONIC",
"CHARMM",
"AMBER",
"G87",
"G96",
"QUARTIC", &
789 "MORSE",
"CUBIC",
"FUES"), &
790 enum_desc=s2a(
"Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", &
791 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", &
792 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", &
793 "Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", &
794 "Functional Form (G96): 1/4*K*(R^2-R0^2)^2", &
795 "Functional Form (QUARTIC): (1/2*K1+[1/3*K2+1/4*K3*|R-R0|]*|R-R0|)(R-R0)^2", &
796 "Functional Form (MORSE): K1*[(1-exp(-K2*(R-R0)))^2-1])", &
797 "Functional Form (CUBIC): K*(R-R0)^2*(1+cs*(R-R0)+7/12*(cs^2*(R-R0)^2))", &
798 "Functional Form (FUES): 1/2*K*R0^2*(1+R0/R*(R0/R-2))"), &
813 description=
"Defines the force constant of the potential. "// &
814 "For MORSE potentials 2 numbers are expected. "// &
815 "For QUARTIC potentials 3 numbers are expected.", &
816 usage=
"K {real}", type_of_var=
real_t, &
817 n_var=-1, unit_str=
"internal_cp2k")
822 description=
"Defines the cubic stretch term.", &
823 usage=
"CS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
824 n_var=1, unit_str=
"bohr^-1")
829 description=
"Defines the equilibrium distance.", &
830 usage=
"R0 {real}", type_of_var=
real_t, &
831 n_var=1, unit_str=
"bohr")
835 END SUBROUTINE create_bond_section
842 SUBROUTINE create_charges_section(section)
843 TYPE(section_type),
POINTER :: section
845 TYPE(keyword_type),
POINTER :: keyword
847 cpassert(.NOT.
ASSOCIATED(section))
849 description=
"Allow to specify an array of classical charges, thus avoiding the"// &
850 " packing and permitting the usage of different charges for same atomic types.", &
851 n_keywords=1, n_subsections=0, repeats=.false.)
854 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
855 description=
"Value of the charge for the individual atom. Order MUST reflect"// &
856 " the one specified for the geometry.", repeats=.true., usage=
"{Real}", &
861 END SUBROUTINE create_charges_section
869 TYPE(section_type),
POINTER :: section
871 TYPE(keyword_type),
POINTER :: keyword
873 cpassert(.NOT.
ASSOCIATED(section))
875 description=
"This section specifies the charge of the MM atoms", &
876 n_keywords=1, n_subsections=0, repeats=.true.)
881 description=
"Defines the atomic kind of the charge.", &
882 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
888 description=
"Defines the charge of the MM atom in electron charge unit.", &
889 usage=
"CHARGE {real}", type_of_var=
real_t, &
901 SUBROUTINE create_quadrupole_section(section)
902 TYPE(section_type),
POINTER :: section
904 TYPE(keyword_type),
POINTER :: keyword
906 cpassert(.NOT.
ASSOCIATED(section))
908 section, __location__, name=
"QUADRUPOLE", &
909 description=
"This section specifies that we will perform an SCF quadrupole calculation of the MM atoms. "// &
910 "Needs KEYWORD POL_SCF in POISSON secton", &
911 n_keywords=1, n_subsections=0, repeats=.true.)
916 description=
"Defines the atomic kind of the SCF quadrupole.", &
917 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
923 description=
"Defines the isotropic polarizability of the MM atom.", &
924 usage=
"CPOL {real}", type_of_var=
real_t, &
925 n_var=1, unit_str=
'internal_cp2k')
929 END SUBROUTINE create_quadrupole_section
936 SUBROUTINE create_dipole_section(section)
937 TYPE(section_type),
POINTER :: section
939 TYPE(keyword_type),
POINTER :: keyword
940 TYPE(section_type),
POINTER :: subsection
942 cpassert(.NOT.
ASSOCIATED(section))
944 description=
"This section specifies that we will perform an SCF dipole calculation of the MM atoms. "// &
945 "Needs KEYWORD POL_SCF in POISSON secton", &
946 n_keywords=1, n_subsections=1, repeats=.true.)
948 NULLIFY (subsection, keyword)
951 description=
"Defines the atomic kind of the SCF dipole.", &
952 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
958 description=
"Defines the isotropic polarizability of the MM atom.", &
959 usage=
"APOL {real}", type_of_var=
real_t, &
960 n_var=1, unit_str=
'angstrom^3')
964 CALL create_damping_section(subsection)
967 END SUBROUTINE create_dipole_section
974 SUBROUTINE create_damping_section(section)
975 TYPE(section_type),
POINTER :: section
977 TYPE(keyword_type),
POINTER :: keyword
979 cpassert(.NOT.
ASSOCIATED(section))
981 description=
"This section specifies optional electric field damping for the polarizable atoms. ", &
982 n_keywords=4, n_subsections=0, repeats=.true.)
987 description=
"Defines the atomic kind for this damping function.", &
988 usage=
"ATOM {KIND1}", type_of_var=
char_t, &
994 description=
"Defines the damping type.", &
995 usage=
"TYPE {string}", type_of_var=
char_t, &
996 n_var=1, default_c_val=
"TANG-TOENNIES")
1001 description=
"Defines the order for this damping.", &
1002 usage=
"ORDER {integer}", type_of_var=
integer_t, &
1003 n_var=1, default_i_val=3)
1008 description=
"Defines the BIJ parameter for this damping.", &
1009 usage=
"BIJ {real}", type_of_var=
real_t, &
1010 n_var=1, unit_str=
'angstrom^-1')
1015 description=
"Defines the CIJ parameter for this damping.", &
1016 usage=
"CIJ {real}", type_of_var=
real_t, &
1017 n_var=1, unit_str=
'')
1021 END SUBROUTINE create_damping_section
1028 SUBROUTINE create_shell_section(section)
1029 TYPE(section_type),
POINTER :: section
1031 TYPE(keyword_type),
POINTER :: keyword
1033 cpassert(.NOT.
ASSOCIATED(section))
1035 description=
"This section specifies the parameters for shell-model potentials", &
1036 n_keywords=6, n_subsections=0, repeats=.true., &
1041 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1042 description=
"The kind for which the shell potential parameters are given ", &
1043 usage=
"H", default_c_val=
"DEFAULT")
1048 variants=(/
"CORE"/), &
1049 description=
"Partial charge assigned to the core (electron charge units)", &
1050 usage=
"CORE_CHARGE {real}", &
1051 default_r_val=0.0_dp)
1055 CALL keyword_create(keyword, __location__, name=
"SHELL_CHARGE", &
1056 variants=(/
"SHELL"/), &
1057 description=
"Partial charge assigned to the shell (electron charge units)", &
1058 usage=
"SHELL_CHARGE {real}", &
1059 default_r_val=0.0_dp)
1063 CALL keyword_create(keyword, __location__, name=
"MASS_FRACTION", &
1064 variants=(/
"MASS"/), &
1065 description=
"Fraction of the mass of the atom to be assigned to the shell", &
1066 usage=
"MASS_FRACTION {real}", &
1067 default_r_val=0.1_dp)
1072 variants=s2a(
"K2",
"SPRING"), &
1073 description=
"Force constant k2 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// &
1074 "binding a core-shell pair when a core-shell potential is employed.", &
1076 usage=
"K2_SPRING {real}", &
1077 default_r_val=-1.0_dp, &
1078 unit_str=
"hartree*bohr^-2")
1083 variants=s2a(
"K4"), &
1084 description=
"Force constant k4 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// &
1085 "binding a core-shell pair when a core-shell potential is employed. "// &
1086 "By default a harmonic spring potential is used, i.e. k4 is zero.", &
1088 usage=
"K4_SPRING {real}", &
1089 default_r_val=0.0_dp, &
1090 unit_str=
"hartree*bohr^-4")
1094 CALL keyword_create(keyword, __location__, name=
"MAX_DISTANCE", &
1095 description=
"Assign a maximum elongation of the spring, "// &
1096 "if negative no limit is imposed", &
1097 usage=
"MAX_DISTANCE 0.0", &
1098 default_r_val=-1.0_dp, &
1099 unit_str=
"angstrom")
1103 CALL keyword_create(keyword, __location__, name=
"SHELL_CUTOFF", &
1104 description=
"Define a screening function to exclude some neighbors "// &
1105 "of the shell when electrostatic interaction are considered, "// &
1106 "if negative no screening is operated", &
1107 usage=
"SHELL_CUTOFF -1.0", &
1108 default_r_val=-1.0_dp, &
1109 unit_str=
"angstrom")
1113 END SUBROUTINE create_shell_section
1122 TYPE(section_type),
POINTER :: section
1124 TYPE(section_type),
POINTER :: subsection
1126 cpassert(.NOT.
ASSOCIATED(section))
1128 description=
"This section specifies the input parameters for 1-4 NON-BONDED interactions.", &
1129 n_keywords=1, n_subsections=0, repeats=.false.)
1131 NULLIFY (subsection)
1156 SUBROUTINE create_nonbonded_section(section)
1157 TYPE(section_type),
POINTER :: section
1159 TYPE(section_type),
POINTER :: subsection
1161 cpassert(.NOT.
ASSOCIATED(section))
1163 description=
"This section specifies the input parameters for NON-BONDED interactions.", &
1164 n_keywords=1, n_subsections=0, repeats=.false.)
1166 NULLIFY (subsection)
1175 CALL create_eam_section(subsection)
1179 CALL create_quip_section(subsection)
1183 CALL create_nequip_section(subsection)
1187 CALL create_allegro_section(subsection)
1191 CALL create_deepmd_section(subsection)
1199 CALL create_ipbv_section(subsection)
1203 CALL create_bmhft_section(subsection)
1207 CALL create_bmhftd_section(subsection)
1211 CALL create_buck4r_section(subsection)
1215 CALL create_buckmorse_section(subsection)
1223 CALL create_tersoff_section(subsection)
1227 CALL create_siepmann_section(subsection)
1231 CALL create_gal_section(subsection)
1235 CALL create_gal21_section(subsection)
1243 END SUBROUTINE create_nonbonded_section
1252 TYPE(section_type),
POINTER :: section
1254 TYPE(keyword_type),
POINTER :: keyword
1257 cpassert(.NOT.
ASSOCIATED(section))
1258 CALL section_create(section, __location__, name=
"neighbor_lists", &
1259 description=
"This section specifies the input parameters for the construction of"// &
1260 " neighbor lists.", &
1261 n_keywords=1, n_subsections=0, repeats=.false.)
1264 description=
"Defines the Verlet Skin for the generation of the neighbor lists", &
1265 usage=
"VERLET_SKIN {real}", default_r_val=
cp_unit_to_cp2k(
value=1.0_dp, &
1266 unit_str=
"angstrom"), &
1267 unit_str=
"angstrom")
1271 CALL keyword_create(keyword, __location__, name=
"neighbor_lists_from_scratch", &
1272 description=
"This keyword enables the building of the neighbouring list from scratch.", &
1273 usage=
"neighbor_lists_from_scratch logical", &
1274 default_l_val=.false., lone_keyword_l_val=.true.)
1279 description=
"This keyword enables the check that two atoms are never below the minimum"// &
1280 " value used to construct the splines during the construction of the neighbouring list."// &
1281 " Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum"// &
1282 " value of the radius used to generate the splines.", &
1283 usage=
"GEO_CHECK", &
1284 default_l_val=.true., lone_keyword_l_val=.true.)
1296 TYPE(section_type),
POINTER :: section
1298 TYPE(keyword_type),
POINTER :: keyword
1300 cpassert(.NOT.
ASSOCIATED(section))
1302 description=
"This section specifies the input parameters for a generic potential type. "// &
1303 "A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** "// &
1304 "or alternatively ^, whereas symbols for brackets must be (). "// &
1305 "The function parser recognizes the (single argument) Fortran 90 intrinsic functions "// &
1306 "abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan, erf, erfc. "// &
1307 "Parsing for intrinsic functions is not case sensitive.", &
1308 n_keywords=1, n_subsections=0, repeats=.true.)
1313 description=
"Defines the atomic kind involved in the generic potential", &
1314 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1320 description=
"Specifies the functional form in mathematical notation.", &
1321 usage=
"FUNCTION a*EXP(-b*x^2)/x+D*log10(x)", type_of_var=
lchar_t, &
1327 description=
"Defines the variable of the functional form.", &
1328 usage=
"VARIABLES x", type_of_var=
char_t, &
1334 description=
"Defines the parameters of the functional form", &
1335 usage=
"PARAMETERS a b D", type_of_var=
char_t, &
1336 n_var=-1, repeats=.true.)
1341 description=
"Defines the values of parameter of the functional form", &
1342 usage=
"VALUES ", type_of_var=
real_t, &
1343 n_var=-1, repeats=.true., unit_str=
"internal_cp2k")
1348 description=
"Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1349 "It is assumed that the corresponding parameter value is specified in this unit.", &
1350 usage=
"UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=
char_t, &
1351 n_var=-1, repeats=.true.)
1356 description=
"Defines the cutoff parameter of the generic potential", &
1358 unit_str=
"angstrom"), &
1359 unit_str=
"angstrom")
1364 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1365 " full range generate by the spline", usage=
"RMIN {real}", &
1366 type_of_var=
real_t, unit_str=
"angstrom")
1371 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1372 " full range generate by the spline", usage=
"RMAX {real}", &
1373 type_of_var=
real_t, unit_str=
"angstrom")
1384 SUBROUTINE create_eam_section(section)
1385 TYPE(section_type),
POINTER :: section
1387 TYPE(keyword_type),
POINTER :: keyword
1389 cpassert(.NOT.
ASSOCIATED(section))
1391 description=
"This section specifies the input parameters for EAM potential type.", &
1392 citations=(/
foiles1986/), n_keywords=1, n_subsections=0, repeats=.true.)
1397 description=
"Defines the atomic kind involved in the nonbond potential", &
1398 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1403 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
1404 variants=(/
"PARMFILE"/), &
1405 description=
"Specifies the filename that contains the tabulated EAM potential. "// &
1406 "File structure: the first line of the potential file contains a title. "// &
1407 "The second line contains: atomic number, mass and lattice constant. "// &
1408 "These information are parsed but not used in CP2K. The third line contains: "// &
1409 "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// &
1410 "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// &
1411 "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// &
1412 "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// &
1413 "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// &
1414 "and its derivative [ev*au_c^-1].", &
1415 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
" ")
1419 END SUBROUTINE create_eam_section
1426 SUBROUTINE create_quip_section(section)
1427 TYPE(section_type),
POINTER :: section
1429 TYPE(keyword_type),
POINTER :: keyword
1431 cpassert(.NOT.
ASSOCIATED(section))
1433 description=
"This section specifies the input parameters for QUIP potential type. "// &
1434 "Mainly intended for things like GAP corrections to DFT "// &
1435 "to achieve correlated-wavefunction-like accuracy. "// &
1436 "Requires linking with quip library from <http://www.libatoms.org>.", &
1437 citations=(/
quip_ref/), n_keywords=1, n_subsections=0, repeats=.true.)
1442 description=
"Defines the atomic kinds involved in the QUIP potential. "// &
1443 "For more than 2 elements, &QUIP section must be repeated until each element "// &
1444 "has been mentioned at least once. Set IGNORE_MISSING_CRITICAL_PARAMS to T "// &
1445 "in enclosing &FORCEFIELD section to avoid having to list every pair of elements separately.", &
1446 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1451 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
1452 variants=(/
"PARMFILE"/), &
1453 description=
"Specifies the filename that contains the QUIP potential.", &
1454 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
"quip_params.xml")
1459 description=
"Specifies the potential initialization arguments for the QUIP potential. "// &
1460 "If blank (default) first potential defined in QUIP parameter file will be used.", &
1461 usage=
"INIT_ARGS", default_c_vals=(/
""/), &
1462 n_var=-1, type_of_var=
char_t)
1467 description=
"Specifies the potential calculation arguments for the QUIP potential.", &
1468 usage=
"CALC_ARGS", default_c_vals=(/
""/), &
1469 n_var=-1, type_of_var=
char_t)
1473 END SUBROUTINE create_quip_section
1480 SUBROUTINE create_nequip_section(section)
1481 TYPE(section_type),
POINTER :: section
1483 TYPE(keyword_type),
POINTER :: keyword
1485 cpassert(.NOT.
ASSOCIATED(section))
1487 description=
"This section specifies the input parameters for NEQUIP potential type "// &
1488 "based on equivariant neural networks with message passing. "// &
1489 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1490 citations=(/
batzner2022/), n_keywords=1, n_subsections=0, repeats=.false.)
1495 description=
"Defines the atomic kinds involved in the NEQUIP potential. "// &
1496 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1497 "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1498 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1499 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1504 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
1505 variants=(/
"PARMFILE"/), &
1506 description=
"Specifies the filename that contains the NEQUIP model.", &
1507 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
"model.pth")
1512 description=
"Units of coordinates in the NEQUIP model.pth file.", &
1513 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1518 description=
"Units of energy in the NEQUIP model.pth file.", &
1519 usage=
"UNIT hartree", default_c_val=
"hartree")
1524 description=
"Units of the forces in the NEQUIP model.pth file.", &
1525 usage=
"UNIT hartree/bohr", default_c_val=
"hartree/bohr")
1530 description=
"Units of the cell vectors in the NEQUIP model.pth file.", &
1531 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1535 END SUBROUTINE create_nequip_section
1542 SUBROUTINE create_allegro_section(section)
1543 TYPE(section_type),
POINTER :: section
1545 TYPE(keyword_type),
POINTER :: keyword
1547 cpassert(.NOT.
ASSOCIATED(section))
1549 description=
"This section specifies the input parameters for ALLEGRO potential type "// &
1550 "based on equivariant neural network potentials. "// &
1551 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1552 citations=(/
musaelian2023/), n_keywords=1, n_subsections=0, repeats=.false.)
1557 description=
"Defines the atomic kinds involved in the ALLEGRO potential. "// &
1558 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1559 "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1560 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1561 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1566 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
1567 variants=(/
"PARMFILE"/), &
1568 description=
"Specifies the filename that contains the ALLEGRO model.", &
1569 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
"model.pth")
1574 description=
"Units of coordinates in the ALLEGRO model.pth file.", &
1575 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1580 description=
"Units of energy in the ALLEGRO model.pth file.", &
1581 usage=
"UNIT hartree", default_c_val=
"hartree")
1586 description=
"Units of the forces in the ALLEGRO model.pth file.", &
1587 usage=
"UNIT hartree/bohr", default_c_val=
"hartree/bohr")
1592 description=
"Units of the cell vectors in the ALLEGRO model.pth file.", &
1593 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1597 END SUBROUTINE create_allegro_section
1604 SUBROUTINE create_deepmd_section(section)
1605 TYPE(section_type),
POINTER :: section
1607 TYPE(keyword_type),
POINTER :: keyword
1610 description=
"This section specifies the input parameters for Deep Potential type. "// &
1611 "Mainly intended for things like neural network to DFT "// &
1612 "to achieve correlated-wavefunction-like accuracy. "// &
1613 "Requires linking with DeePMD-kit library from "// &
1614 "<a href=""https://docs.deepmodeling.com/projects/deepmd/en/master"" "// &
1615 "target=""_blank"">https://docs.deepmodeling.com/projects/deepmd/en/master</a> .", &
1616 citations=(/
wang2018,
zeng2023/), n_keywords=1, n_subsections=0, repeats=.false.)
1619 description=
"Defines the atomic kinds involved in the Deep Potential. "// &
1620 "Provide a list of each element, "// &
1621 "making sure that the mapping from the ATOMS list to DeePMD atom types is correct.", &
1622 usage=
"ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=
char_t, &
1626 CALL keyword_create(keyword, __location__, name=
"POT_FILE_NAME", &
1627 variants=(/
"PARMFILE"/), &
1628 description=
"Specifies the filename that contains the DeePMD-kit potential.", &
1629 usage=
"POT_FILE_NAME {FILENAME}", default_lc_val=
"graph.pb")
1632 CALL keyword_create(keyword, __location__, name=
"ATOMS_DEEPMD_TYPE", &
1633 description=
"Specifies the atomic TYPE for the DeePMD-kit potential. "// &
1634 "Provide a list of index, making sure that the mapping "// &
1635 "from the ATOMS list to DeePMD atom types is correct. ", &
1636 usage=
"ATOMS_DEEPMD_TYPE {TYPE INTEGER 1} {TYPE INTEGER 2} .. "// &
1637 "{TYPE INTEGER N}", type_of_var=
integer_t, &
1641 END SUBROUTINE create_deepmd_section
1649 TYPE(section_type),
POINTER :: section
1651 TYPE(keyword_type),
POINTER :: keyword
1653 cpassert(.NOT.
ASSOCIATED(section))
1654 CALL section_create(section, __location__, name=
"lennard-jones", &
1655 description=
"This section specifies the input parameters for LENNARD-JONES potential type. "// &
1656 "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", &
1657 n_keywords=1, n_subsections=0, repeats=.true.)
1662 description=
"Defines the atomic kind involved in the nonbond potential", &
1663 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1669 description=
"Defines the EPSILON parameter of the LJ potential", &
1670 usage=
"EPSILON {real}", type_of_var=
real_t, &
1671 n_var=1, unit_str=
"K_e")
1676 description=
"Defines the SIGMA parameter of the LJ potential", &
1677 usage=
"SIGMA {real}", type_of_var=
real_t, &
1678 n_var=1, unit_str=
"angstrom")
1683 description=
"Defines the cutoff parameter of the LJ potential", &
1685 unit_str=
"angstrom"), &
1686 unit_str=
"angstrom")
1691 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1692 " full range generate by the spline", usage=
"RMIN {real}", &
1693 type_of_var=
real_t, unit_str=
"angstrom")
1698 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1699 " full range generate by the spline", usage=
"RMAX {real}", &
1700 type_of_var=
real_t, unit_str=
"angstrom")
1712 TYPE(section_type),
POINTER :: section
1714 TYPE(keyword_type),
POINTER :: keyword
1716 cpassert(.NOT.
ASSOCIATED(section))
1718 description=
"This section specifies the input parameters for WILLIAMS potential type. "// &
1719 "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", &
1720 n_keywords=1, n_subsections=0, repeats=.true.)
1725 description=
"Defines the atomic kind involved in the nonbond potential", &
1726 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1732 description=
"Defines the A parameter of the Williams potential", &
1733 usage=
"A {real}", type_of_var=
real_t, &
1734 n_var=1, unit_str=
"K_e")
1739 description=
"Defines the B parameter of the Williams potential", &
1740 usage=
"B {real}", type_of_var=
real_t, &
1741 n_var=1, unit_str=
"angstrom^-1")
1746 description=
"Defines the C parameter of the Williams potential", &
1747 usage=
"C {real}", type_of_var=
real_t, &
1748 n_var=1, unit_str=
"K_e*angstrom^6")
1753 description=
"Defines the cutoff parameter of the Williams potential", &
1755 unit_str=
"angstrom"), &
1756 unit_str=
"angstrom")
1761 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1762 " full range generate by the spline", usage=
"RMIN {real}", &
1763 type_of_var=
real_t, unit_str=
"angstrom")
1768 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1769 " full range generate by the spline", usage=
"RMAX {real}", &
1770 type_of_var=
real_t, unit_str=
"angstrom")
1782 TYPE(section_type),
POINTER :: section
1784 TYPE(keyword_type),
POINTER :: keyword
1786 cpassert(.NOT.
ASSOCIATED(section))
1788 description=
"This section specifies the input parameters for GOODWIN potential type. "// &
1789 "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", &
1790 n_keywords=1, n_subsections=0, repeats=.true.)
1794 description=
"Defines the atomic kind involved in the nonbond potential", &
1795 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1801 description=
"Defines the VR0 parameter of the Goodwin potential", &
1802 usage=
"VR0 {real}", type_of_var=
real_t, &
1803 n_var=1, unit_str=
"K_e")
1808 description=
"Defines the D parameter of the Goodwin potential", &
1809 usage=
"D {real}", type_of_var=
real_t, &
1810 n_var=1, unit_str=
"angstrom")
1815 description=
"Defines the DC parameter of the Goodwin potential", &
1816 usage=
"DC {real}", type_of_var=
real_t, &
1817 n_var=1, unit_str=
"angstrom")
1822 description=
"Defines the M parameter of the Goodwin potential", &
1823 usage=
"M {real}", type_of_var=
integer_t, &
1829 description=
"Defines the MC parameter of the Goodwin potential", &
1830 usage=
"MC {real}", type_of_var=
integer_t, &
1836 description=
"Defines the cutoff parameter of the Goodwin potential", &
1838 unit_str=
"angstrom"), &
1839 unit_str=
"angstrom")
1844 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1845 " full range generate by the spline", usage=
"RMIN {real}", &
1846 type_of_var=
real_t, unit_str=
"angstrom")
1851 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1852 " full range generate by the spline", usage=
"RMAX {real}", &
1853 type_of_var=
real_t, unit_str=
"angstrom")
1864 SUBROUTINE create_ipbv_section(section)
1865 TYPE(section_type),
POINTER :: section
1867 TYPE(keyword_type),
POINTER :: keyword
1869 cpassert(.NOT.
ASSOCIATED(section))
1871 description=
"This section specifies the input parameters for IPBV potential type. "// &
1872 "Functional form: Implicit table function.", &
1873 n_keywords=1, n_subsections=0, repeats=.true.)
1878 description=
"Defines the atomic kind involved in the IPBV nonbond potential", &
1879 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1885 description=
"Defines the cutoff parameter of the IPBV potential", &
1887 unit_str=
"angstrom"), &
1888 unit_str=
"angstrom")
1893 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1894 " full range generate by the spline", usage=
"RMIN {real}", &
1895 type_of_var=
real_t, unit_str=
"angstrom")
1900 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1901 " full range generate by the spline", usage=
"RMAX {real}", &
1902 type_of_var=
real_t, unit_str=
"angstrom")
1906 END SUBROUTINE create_ipbv_section
1913 SUBROUTINE create_bmhft_section(section)
1914 TYPE(section_type),
POINTER :: section
1916 TYPE(keyword_type),
POINTER :: keyword
1918 cpassert(.NOT.
ASSOCIATED(section))
1920 description=
"This section specifies the input parameters for BMHFT potential type. "// &
1921 "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8. "// &
1922 "Values available inside cp2k only for the Na/Cl pair.", &
1928 description=
"Defines the atomic kind involved in the BMHFT nonbond potential", &
1929 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1935 description=
"Defines the kinds for which internally is defined the BMHFT nonbond potential"// &
1936 " at the moment only Na and Cl.", &
1937 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
1943 description=
"Defines the cutoff parameter of the BMHFT potential", &
1944 usage=
"RCUT {real}", default_r_val=7.8_dp, &
1945 unit_str=
"angstrom")
1950 description=
"Defines the A parameter of the Fumi-Tosi Potential", &
1951 usage=
"A {real}", type_of_var=
real_t, &
1952 n_var=1, unit_str=
"hartree")
1957 description=
"Defines the B parameter of the Fumi-Tosi Potential", &
1958 usage=
"B {real}", type_of_var=
real_t, &
1959 n_var=1, unit_str=
"angstrom^-1")
1964 description=
"Defines the C parameter of the Fumi-Tosi Potential", &
1965 usage=
"C {real}", type_of_var=
real_t, &
1966 n_var=1, unit_str=
"hartree*angstrom^6")
1971 description=
"Defines the D parameter of the Fumi-Tosi Potential", &
1972 usage=
"D {real}", type_of_var=
real_t, &
1973 n_var=1, unit_str=
"hartree*angstrom^8")
1978 description=
"Defines the lower bound of the potential. If not set the range is the"// &
1979 " full range generate by the spline", usage=
"RMIN {real}", &
1980 type_of_var=
real_t, unit_str=
"angstrom")
1985 description=
"Defines the upper bound of the potential. If not set the range is the"// &
1986 " full range generate by the spline", usage=
"RMAX {real}", &
1987 type_of_var=
real_t, unit_str=
"angstrom")
1991 END SUBROUTINE create_bmhft_section
2000 SUBROUTINE create_bmhftd_section(section)
2001 TYPE(section_type),
POINTER :: section
2003 TYPE(keyword_type),
POINTER :: keyword
2005 cpassert(.NOT.
ASSOCIATED(section))
2007 description=
"This section specifies the input parameters for the BMHFTD potential type. "// &
2008 "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8 "// &
2009 "where f_order(r) = 1 - exp(-BD*r)*\sum_{k=0}^order (BD*r)^k/k! "// &
2010 "(Tang-Toennies damping function). No pre-defined parameter values are available.", &
2016 description=
"Defines the atomic kind involved in the BMHFTD nonbond potential", &
2017 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2023 description=
"Defines the kinds for which internally is defined the BMHFTD nonbond potential"// &
2024 " at the moment no species included.", &
2025 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2031 description=
"Defines the cutoff parameter of the BMHFTD potential", &
2032 usage=
"RCUT {real}", default_r_val=7.8_dp, &
2033 unit_str=
"angstrom")
2038 description=
"Defines the A parameter of the dispersion-damped Fumi-Tosi potential", &
2039 usage=
"A {real}", type_of_var=
real_t, &
2040 n_var=1, unit_str=
"hartree")
2045 description=
"Defines the B parameter of the dispersion-damped Fumi-Tosi potential", &
2046 usage=
"B {real}", type_of_var=
real_t, &
2047 n_var=1, unit_str=
"angstrom^-1")
2052 description=
"Defines the C parameter of the dispersion-damped Fumi-Tosi potential", &
2053 usage=
"C {real}", type_of_var=
real_t, &
2054 n_var=1, unit_str=
"hartree*angstrom^6")
2059 description=
"Defines the D parameter of the dispersion-damped Fumi-Tosi potential", &
2060 usage=
"D {real}", type_of_var=
real_t, &
2061 n_var=1, unit_str=
"hartree*angstrom^8")
2066 description=
"Defines the BD parameters of the dispersion-damped Fumi-Tosi potential. "// &
2067 "One or two parameter values are expected. If only one value is provided, then this "// &
2068 "value will be used both for the 6th and the 8th order term.", &
2069 usage=
"BD {real} {real}", type_of_var=
real_t, &
2070 n_var=-1, unit_str=
"angstrom^-1")
2075 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2076 " full range generate by the spline", usage=
"RMIN {real}", &
2077 type_of_var=
real_t, unit_str=
"angstrom")
2082 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2083 " full range generate by the spline", usage=
"RMAX {real}", &
2084 type_of_var=
real_t, unit_str=
"angstrom")
2088 END SUBROUTINE create_bmhftd_section
2095 SUBROUTINE create_buck4r_section(section)
2096 TYPE(section_type),
POINTER :: section
2098 TYPE(keyword_type),
POINTER :: keyword
2100 cpassert(.NOT.
ASSOCIATED(section))
2102 description=
"This section specifies the input parameters for the Buckingham 4-ranges"// &
2103 " potential type."//
newline// &
2104 "| Range | Functional Form |"//
newline// &
2105 "| ----- | --------------- |"//
newline// &
2106 "| $ r < r_1 $ | $ V(r) = A\exp(-Br) $ |"//
newline// &
2107 "| $ r_1 \leq r < r_2 $ | $ V(r) = \sum_n \operatorname{POLY1}(n)r_n $ |"//
newline// &
2108 "| $ r_2 \leq r < r_3 $ | $ V(r) = \sum_n \operatorname{POLY2}(n)r_n $ |"//
newline// &
2109 "| $ r \geq r_3 $ | $ V(r) = -C/r_6 $ |"//
newline, &
2110 n_keywords=1, n_subsections=0, repeats=.true.)
2115 description=
"Defines the atomic kind involved in the nonbond potential", &
2116 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2122 description=
"Defines the A parameter of the Buckingham potential", &
2123 usage=
"A {real}", type_of_var=
real_t, &
2124 n_var=1, unit_str=
"K_e")
2129 description=
"Defines the B parameter of the Buckingham potential", &
2130 usage=
"B {real}", type_of_var=
real_t, &
2131 n_var=1, unit_str=
"angstrom^-1")
2136 description=
"Defines the C parameter of the Buckingham potential", &
2137 usage=
"C {real}", type_of_var=
real_t, &
2138 n_var=1, unit_str=
"K_e*angstrom^6")
2143 description=
"Defines the upper bound of the first range ", &
2144 usage=
"R1 {real}", type_of_var=
real_t, &
2145 n_var=1, unit_str=
"angstrom")
2150 description=
"Defines the upper bound of the second range ", &
2151 usage=
"R2 {real}", type_of_var=
real_t, &
2152 n_var=1, unit_str=
"angstrom")
2157 description=
"Defines the upper bound of the third range ", &
2158 usage=
"R3 {real}", type_of_var=
real_t, &
2159 n_var=1, unit_str=
"angstrom")
2164 description=
"Coefficients of the polynomial used in the second range "// &
2165 "This keyword can be repeated several times.", &
2166 usage=
"POLY1 C1 C2 C3 ..", &
2167 n_var=-1, unit_str=
"K_e", type_of_var=
real_t, repeats=.true.)
2172 description=
"Coefficients of the polynomial used in the third range "// &
2173 "This keyword can be repeated several times.", &
2174 usage=
"POLY1 C1 C2 C3 ..", &
2175 n_var=-1, unit_str=
"K_e", type_of_var=
real_t, repeats=.true.)
2180 description=
"Defines the cutoff parameter of the Buckingham potential", &
2182 unit_str=
"angstrom"), &
2183 unit_str=
"angstrom")
2188 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2189 " full range generate by the spline", usage=
"RMIN {real}", &
2190 type_of_var=
real_t, unit_str=
"angstrom")
2195 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2196 " full range generate by the spline", usage=
"RMAX {real}", &
2197 type_of_var=
real_t, unit_str=
"angstrom")
2201 END SUBROUTINE create_buck4r_section
2208 SUBROUTINE create_buckmorse_section(section)
2209 TYPE(section_type),
POINTER :: section
2211 TYPE(keyword_type),
POINTER :: keyword
2213 cpassert(.NOT.
ASSOCIATED(section))
2215 section, __location__, name=
"BUCKMORSE", &
2216 description=
"This section specifies the input parameters for"// &
2217 " Buckingham plus Morse potential type"// &
2218 " 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)]}.", &
2219 citations=(/
yamada2000/), n_keywords=1, n_subsections=0, repeats=.true.)
2224 description=
"Defines the atomic kind involved in the nonbond potential", &
2225 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2231 description=
"Defines the f0 parameter of Buckingham+Morse potential", &
2232 usage=
"F0 {real}", type_of_var=
real_t, &
2233 n_var=1, unit_str=
"K_e*angstrom^-1")
2238 description=
"Defines the A1 parameter of Buckingham+Morse potential", &
2239 usage=
"A1 {real}", type_of_var=
real_t, &
2240 n_var=1, unit_str=
"angstrom")
2245 description=
"Defines the A2 parameter of Buckingham+Morse potential", &
2246 usage=
"A2 {real}", type_of_var=
real_t, &
2247 n_var=1, unit_str=
"angstrom")
2252 description=
"Defines the B1 parameter of Buckingham+Morse potential", &
2253 usage=
"B1 {real}", type_of_var=
real_t, &
2254 n_var=1, unit_str=
"angstrom")
2259 description=
"Defines the B2 parameter of Buckingham+Morse potential", &
2260 usage=
"B2 {real}", type_of_var=
real_t, &
2261 n_var=1, unit_str=
"angstrom")
2266 description=
"Defines the C parameter of Buckingham+Morse potential", &
2267 usage=
"C {real}", type_of_var=
real_t, &
2268 n_var=1, unit_str=
"K_e*angstrom^6")
2273 description=
"Defines the amplitude for the Morse part ", &
2274 usage=
"D {real}", type_of_var=
real_t, &
2275 n_var=1, unit_str=
"K_e")
2280 description=
"Defines the equilibrium distance for the Morse part ", &
2281 usage=
"R0 {real}", type_of_var=
real_t, &
2282 n_var=1, unit_str=
"angstrom")
2287 description=
"Defines the width for the Morse part ", &
2288 usage=
"Beta {real}", type_of_var=
real_t, &
2289 n_var=1, unit_str=
"angstrom^-1")
2294 description=
"Defines the cutoff parameter of the Buckingham potential", &
2296 unit_str=
"angstrom"), &
2297 unit_str=
"angstrom")
2302 description=
"Defines the lower bound of the potential. If not set the range is the"// &
2303 " full range generate by the spline", usage=
"RMIN {real}", &
2304 type_of_var=
real_t, unit_str=
"angstrom")
2309 description=
"Defines the upper bound of the potential. If not set the range is the"// &
2310 " full range generate by the spline", usage=
"RMAX {real}", &
2311 type_of_var=
real_t, unit_str=
"angstrom")
2315 END SUBROUTINE create_buckmorse_section
2322 SUBROUTINE create_tersoff_section(section)
2323 TYPE(section_type),
POINTER :: section
2325 TYPE(keyword_type),
POINTER :: keyword
2327 cpassert(.NOT.
ASSOCIATED(section))
2329 description=
"This section specifies the input parameters for Tersoff potential type.", &
2330 citations=(/
tersoff1988/), n_keywords=1, n_subsections=0, repeats=.true.)
2335 description=
"Defines the atomic kind involved in the nonbond potential", &
2336 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2342 description=
"Defines the A parameter of Tersoff potential", &
2343 usage=
"A {real}", type_of_var=
real_t, &
2346 n_var=1, unit_str=
"eV")
2351 description=
"Defines the B parameter of Tersoff potential", &
2352 usage=
"B {real}", type_of_var=
real_t, &
2355 n_var=1, unit_str=
"eV")
2360 description=
"Defines the lambda1 parameter of Tersoff potential", &
2361 usage=
"lambda1 {real}", type_of_var=
real_t, &
2363 unit_str=
"angstrom^-1"), &
2364 n_var=1, unit_str=
"angstrom^-1")
2369 description=
"Defines the lambda2 parameter of Tersoff potential", &
2370 usage=
"lambda2 {real}", type_of_var=
real_t, &
2372 unit_str=
"angstrom^-1"), &
2373 n_var=1, unit_str=
"angstrom^-1")
2378 description=
"Defines the alpha parameter of Tersoff potential", &
2379 usage=
"alpha {real}", type_of_var=
real_t, &
2380 default_r_val=0.0_dp, &
2386 description=
"Defines the beta parameter of Tersoff potential", &
2387 usage=
"beta {real}", type_of_var=
real_t, &
2388 default_r_val=1.0999e-6_dp, &
2389 n_var=1, unit_str=
"")
2394 description=
"Defines the n parameter of Tersoff potential", &
2395 usage=
"n {real}", type_of_var=
real_t, &
2396 default_r_val=7.8734e-1_dp, &
2397 n_var=1, unit_str=
"")
2402 description=
"Defines the c parameter of Tersoff potential", &
2403 usage=
"c {real}", type_of_var=
real_t, &
2404 default_r_val=1.0039e5_dp, &
2405 n_var=1, unit_str=
"")
2410 description=
"Defines the d parameter of Tersoff potential", &
2411 usage=
"d {real}", type_of_var=
real_t, &
2412 default_r_val=1.6218e1_dp, &
2413 n_var=1, unit_str=
"")
2418 description=
"Defines the h parameter of Tersoff potential", &
2419 usage=
"h {real}", type_of_var=
real_t, &
2420 default_r_val=-5.9826e-1_dp, &
2421 n_var=1, unit_str=
"")
2426 description=
"Defines the lambda3 parameter of Tersoff potential", &
2427 usage=
"lambda3 {real}", type_of_var=
real_t, &
2429 unit_str=
"angstrom^-1"), &
2430 n_var=1, unit_str=
"angstrom^-1")
2435 description=
"Defines the bigR parameter of Tersoff potential", &
2436 usage=
"bigR {real}", type_of_var=
real_t, &
2438 unit_str=
"angstrom"), &
2439 n_var=1, unit_str=
"angstrom")
2444 description=
"Defines the D parameter of Tersoff potential", &
2445 usage=
"bigD {real}", type_of_var=
real_t, &
2447 unit_str=
"angstrom"), &
2448 n_var=1, unit_str=
"angstrom")
2453 description=
"Defines the cutoff parameter of the tersoff potential."// &
2454 " This parameter is in principle already defined by the values of"// &
2455 " bigD and bigR. But it is necessary to define it when using the tersoff"// &
2456 " in conjunction with other potentials (for the same atomic pair) in order to have"// &
2457 " the same consistent definition of RCUT for all potentials.", &
2458 usage=
"RCUT {real}", type_of_var=
real_t, &
2459 n_var=1, unit_str=
"angstrom")
2463 END SUBROUTINE create_tersoff_section
2471 SUBROUTINE create_siepmann_section(section)
2472 TYPE(section_type),
POINTER :: section
2474 TYPE(keyword_type),
POINTER :: keyword
2476 cpassert(.NOT.
ASSOCIATED(section))
2478 description=
"This section specifies the input parameters for the"// &
2479 " Siepmann-Sprik potential type. Consists of 4 terms:"// &
2480 " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// &
2481 " have to be given via the GENPOT section. The terms T3+T4"// &
2482 " are obtained from the SIEPMANN section. The Siepmann-Sprik"// &
2483 " potential is designed for water-metal chemisorption.", &
2484 citations=(/
siepmann1995/), n_keywords=1, n_subsections=0, repeats=.true.)
2489 description=
"Defines the atomic kind involved in the nonbond potential", &
2490 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2496 description=
"Defines the B parameter of Siepmann potential", &
2497 usage=
"B {real}", type_of_var=
real_t, &
2499 unit_str=
"angstrom"), &
2500 n_var=1, unit_str=
"angstrom")
2505 description=
"Defines the D parameter of Siepmann potential", &
2506 usage=
"D {real}", type_of_var=
real_t, &
2508 unit_str=
"internal_cp2k"), &
2509 n_var=1, unit_str=
"internal_cp2k")
2514 description=
"Defines the E parameter of Siepmann potential", &
2515 usage=
"E {real}", type_of_var=
real_t, &
2517 unit_str=
"internal_cp2k"), &
2518 n_var=1, unit_str=
"internal_cp2k")
2523 description=
"Defines the F parameter of Siepmann potential", &
2524 usage=
"B {real}", type_of_var=
real_t, &
2525 default_r_val=13.3_dp, n_var=1)
2530 description=
"Defines the beta parameter of Siepmann potential", &
2531 usage=
"beta {real}", type_of_var=
real_t, &
2532 default_r_val=10.0_dp, n_var=1)
2537 description=
"Defines the cutoff parameter of Siepmann potential", &
2538 usage=
"RCUT {real}", type_of_var=
real_t, &
2540 unit_str=
"angstrom"), &
2541 n_var=1, unit_str=
"angstrom")
2545 CALL keyword_create(keyword, __location__, name=
"ALLOW_OH_FORMATION", &
2546 description=
" The Siepmann-Sprik potential is actually designed for intact"// &
2547 " water molecules only. If water is treated at the QM level,"// &
2548 " water molecules can potentially dissociate, i.e."// &
2549 " some O-H bonds might be stretched leading temporarily"// &
2550 " to the formation of OH- ions. This keyword allows the"// &
2551 " the formation of such ions. The T3 term (dipole term)"// &
2552 " is then switched off for evaluating the interaction"// &
2553 " between the OH- ion and the metal.", &
2554 usage=
"ALLOW_OH_FORMATION TRUE", &
2555 default_l_val=.false., lone_keyword_l_val=.true.)
2559 CALL keyword_create(keyword, __location__, name=
"ALLOW_H3O_FORMATION", &
2560 description=
" The Siepmann-Sprik potential is designed for intact water"// &
2561 " molecules only. If water is treated at the QM level"// &
2562 " and an acid is present, hydronium ions might occur."// &
2563 " This keyword allows the formation of hydronium ions."// &
2564 " The T3 term (dipole term) is switched off for evaluating"// &
2565 " the interaction between hydronium and the metal.", &
2566 usage=
"ALLOW_H3O_FORMATION TRUE", &
2567 default_l_val=.false., lone_keyword_l_val=.true.)
2571 CALL keyword_create(keyword, __location__, name=
"ALLOW_O_FORMATION", &
2572 description=
" The Siepmann-Sprik potential is actually designed for intact"// &
2573 " water molecules only. If water is treated at the QM level,"// &
2574 " water molecules can potentially dissociate, i.e."// &
2575 " some O-H bonds might be stretched leading temporarily"// &
2576 " to the formation of O^2- ions. This keyword allows the"// &
2577 " the formation of such ions. The T3 term (dipole term)"// &
2578 " is then switched off for evaluating the interaction"// &
2579 " between the O^2- ion and the metal.", &
2580 usage=
"ALLOW_O2-_FORMATION TRUE", &
2581 default_l_val=.false., lone_keyword_l_val=.true.)
2585 END SUBROUTINE create_siepmann_section
2593 SUBROUTINE create_gal_section(section)
2594 TYPE(section_type),
POINTER :: section
2596 TYPE(keyword_type),
POINTER :: keyword
2597 TYPE(section_type),
POINTER :: subsection
2599 cpassert(.NOT.
ASSOCIATED(section))
2601 description=
"Implementation of the GAL19 forcefield, see associated paper", &
2602 citations=(/
clabaut2020/), n_keywords=1, n_subsections=1, repeats=.true.)
2604 NULLIFY (keyword, subsection)
2607 description=
"Defines the atomic kind involved in the nonbond potential", &
2608 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2614 description=
"Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2615 usage=
"METALS {KIND1} {KIND2} ..", type_of_var=
char_t, &
2621 description=
"Defines the epsilon_a parameter of GAL19 potential", &
2622 usage=
"epsilon {real}", type_of_var=
real_t, &
2624 unit_str=
"kcalmol"), &
2625 n_var=1, unit_str=
"kcalmol")
2630 description=
"Defines the b perpendicular parameter of GAL19 potential", &
2631 usage=
"bxy {real}", type_of_var=
real_t, &
2633 unit_str=
"internal_cp2k"), &
2634 n_var=1, unit_str=
"angstrom^-2")
2639 description=
"Defines the b parallel parameter of GAL19 potential", &
2640 usage=
"bz {real}", type_of_var=
real_t, &
2642 unit_str=
"internal_cp2k"), &
2643 n_var=1, unit_str=
"angstrom^-2")
2648 description=
"Defines the R_0 parameters of GAL19 potential for the two METALS. "// &
2649 "This is the only parameter that is shared between the two section of the "// &
2650 "forcefield in the case of two metals (alloy). "// &
2651 "If one metal only is present, a second number should be given but won't be read", &
2652 usage=
"r {real} {real}", type_of_var=
real_t, n_var=2, unit_str=
"angstrom")
2657 description=
"Defines the a1 parameter of GAL19 potential", &
2658 usage=
"a1 {real}", type_of_var=
real_t, &
2659 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2664 description=
"Defines the a2 parameter of GAL19 potential", &
2665 usage=
"a2 {real}", type_of_var=
real_t, &
2666 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2671 description=
"Defines the a3 parameter of GAL19 potential", &
2672 usage=
"a3 {real}", type_of_var=
real_t, &
2673 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2678 description=
"Defines the a4 parameter of GAL19 potential", &
2679 usage=
"a4 {real}", type_of_var=
real_t, &
2680 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2685 description=
"Defines the A parameter of GAL19 potential", &
2686 usage=
"A {real}", type_of_var=
real_t, &
2687 default_r_val=10.0_dp, n_var=1, unit_str=
"kcalmol")
2692 description=
"Defines the B parameter of GAL19 potential", &
2693 usage=
"B {real}", type_of_var=
real_t, &
2694 default_r_val=10.0_dp, n_var=1, unit_str=
"angstrom^-1")
2699 description=
"Defines the C parameter of GAL19 potential", &
2700 usage=
"C {real}", type_of_var=
real_t, &
2701 default_r_val=10.0_dp, n_var=1, unit_str=
"angstrom^6*kcalmol")
2706 description=
"Defines the cutoff parameter of GAL19 potential", &
2707 usage=
"RCUT {real}", type_of_var=
real_t, &
2709 unit_str=
"angstrom"), &
2710 n_var=1, unit_str=
"angstrom")
2714 description=
"Demands the particular output needed to a least square fit", &
2715 usage=
"Fit_express TRUE", &
2716 default_l_val=.false., lone_keyword_l_val=.true.)
2719 CALL create_gcn_section(subsection)
2723 END SUBROUTINE create_gal_section
2731 SUBROUTINE create_gal21_section(section)
2732 TYPE(section_type),
POINTER :: section
2734 TYPE(keyword_type),
POINTER :: keyword
2735 TYPE(section_type),
POINTER :: subsection
2737 cpassert(.NOT.
ASSOCIATED(section))
2739 description=
"Implementation of the GAL21 forcefield, see associated paper", &
2740 citations=(/
clabaut2021/), n_keywords=1, n_subsections=1, repeats=.true.)
2742 NULLIFY (keyword, subsection)
2745 description=
"Defines the atomic kind involved in the nonbond potential", &
2746 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2752 description=
"Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2753 usage=
"METALS {KIND1} {KIND2} ..", type_of_var=
char_t, &
2759 description=
"Defines the epsilon parameter of GAL21 potential", &
2760 usage=
"epsilon {real} {real} {real}", type_of_var=
real_t, &
2761 n_var=3, unit_str=
"kcalmol")
2766 description=
"Defines the b perpendicular parameter of GAL21 potential", &
2767 usage=
"bxy {real} {real}", type_of_var=
real_t, &
2768 n_var=2, unit_str=
"angstrom^-2")
2773 description=
"Defines the b parallel parameter of GAL21 potential", &
2774 usage=
"bz {real} {real}", type_of_var=
real_t, &
2775 n_var=2, unit_str=
"angstrom^-2")
2780 description=
"Defines the R_0 parameters of GAL21 potential for the two METALS. "// &
2781 "This is the only parameter that is shared between the two section of "// &
2782 "the forcefield in the case of two metals (alloy). "// &
2783 "If one metal only is present, a second number should be given but won't be read", &
2784 usage=
"r {real} {real}", type_of_var=
real_t, n_var=2, unit_str=
"angstrom")
2789 description=
"Defines the a1 parameter of GAL21 potential", &
2790 usage=
"a1 {real} {real} {real}", type_of_var=
real_t, &
2791 n_var=3, unit_str=
"kcalmol")
2796 description=
"Defines the a2 parameter of GAL21 potential", &
2797 usage=
"a2 {real} {real} {real}", type_of_var=
real_t, &
2798 n_var=3, unit_str=
"kcalmol")
2803 description=
"Defines the a3 parameter of GAL21 potential", &
2804 usage=
"a3 {real} {real} {real}", type_of_var=
real_t, &
2805 n_var=3, unit_str=
"kcalmol")
2810 description=
"Defines the a4 parameter of GAL21 potential", &
2811 usage=
"a4 {real} {real} {real}", type_of_var=
real_t, &
2812 n_var=3, unit_str=
"kcalmol")
2817 description=
"Defines the A parameter of GAL21 potential", &
2818 usage=
"A {real} {real}", type_of_var=
real_t, &
2819 n_var=2, unit_str=
"kcalmol")
2824 description=
"Defines the B parameter of GAL21 potential", &
2825 usage=
"B {real} {real}", type_of_var=
real_t, &
2826 n_var=2, unit_str=
"angstrom^-1")
2831 description=
"Defines the C parameter of GAL21 potential", &
2832 usage=
"C {real}", type_of_var=
real_t, &
2833 n_var=1, unit_str=
"angstrom^6*kcalmol")
2838 description=
"Defines the AH parameter of GAL21 potential", &
2839 usage=
"AH {real} {real}", type_of_var=
real_t, &
2840 n_var=2, unit_str=
"kcalmol")
2845 description=
"Defines the BH parameter of GAL21 potential", &
2846 usage=
"BH {real} {real}", type_of_var=
real_t, &
2847 n_var=2, unit_str=
"angstrom^-1")
2852 description=
"Defines the cutoff parameter of GAL21 potential", &
2853 usage=
"RCUT {real}", type_of_var=
real_t, &
2855 unit_str=
"angstrom"), &
2856 n_var=1, unit_str=
"angstrom")
2861 description=
"Demands the particular output needed to a least square fit", &
2862 usage=
"Fit_express TRUE", &
2863 default_l_val=.false., lone_keyword_l_val=.true.)
2867 CALL create_gcn_section(subsection)
2871 END SUBROUTINE create_gal21_section
2880 TYPE(section_type),
POINTER :: section
2882 TYPE(keyword_type),
POINTER :: keyword
2884 cpassert(.NOT.
ASSOCIATED(section))
2887 description=
"This section specifies the input parameters for TABPOT potential type.", &
2888 n_keywords=1, n_subsections=0, repeats=.true.)
2892 description=
"Defines the atomic kind involved", &
2893 usage=
"ATOMS {KIND1} {KIND2}", type_of_var=
char_t, &
2898 CALL keyword_create(keyword, __location__, name=
"PARM_FILE_NAME", &
2899 variants=(/
"PARMFILE"/), &
2900 description=
"Specifies the filename that contains the tabulated NONBONDED potential. "// &
2901 "File structure: the third line of the potential file contains a title. "// &
2902 "The 4th line contains: 'N', number of data points, 'R', lower bound of distance, distance cutoff. "// &
2904 "in order npoints lines for index, distance [A], energy [kcal/mol], and force [kcal/mol/A]", &
2905 usage=
"PARM_FILE_NAME {FILENAME}", default_lc_val=
"")
2917 SUBROUTINE create_gcn_section(section)
2918 TYPE(section_type),
POINTER :: section
2920 TYPE(keyword_type),
POINTER :: keyword
2922 cpassert(.NOT.
ASSOCIATED(section))
2924 description=
"Allow to specify the generalized coordination number of the atoms. "// &
2925 "Those numbers msust be generated by another program ", &
2926 n_keywords=1, n_subsections=0, repeats=.false.)
2929 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2930 description=
"Value of the GCN for the individual atom. Order MUST reflect"// &
2931 " the one specified for the geometry.", repeats=.true., usage=
"{Real}", &
2932 default_r_val=0.0_dp, type_of_var=
real_t)
2936 END SUBROUTINE create_gcn_section
2946 TYPE(section_type),
POINTER :: print_key
2947 CHARACTER(LEN=*),
INTENT(IN) :: label
2948 INTEGER,
INTENT(IN) :: print_level
2950 TYPE(keyword_type),
POINTER :: keyword
2952 cpassert(.NOT.
ASSOCIATED(print_key))
2954 description=
"Section controlling the calculation of "//trim(label)//
"."// &
2955 " Note that the result in the periodic case might be defined modulo a certain period,"// &
2956 " determined by the lattice vectors. During MD, this can lead to jumps.", &
2957 print_level=print_level, filename=
"__STD_OUT__")
2962 description=
operator"Use Berry phase formula (PERIODIC=T) or simple (PERIODIC=F). "// &
2963 "The latter normally requires that the CELL is periodic NONE.", &
2964 usage=
"PERIODIC {logical}", &
2967 default_l_val=.true., lone_keyword_l_val=.true.)
2972 variants=s2a(
"REF"), &
2973 description=
"Define the reference point for the calculation of the electrostatic moment.", &
2974 usage=
"REFERENCE COM", &
2975 enum_c_vals=s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
2976 enum_desc=s2a(
"Use Center of Mass", &
2977 "Use Center of Atomic Charges", &
2978 "Use User Defined Point (Keyword:REF_POINT)", &
2979 "Use Origin of Coordinate System"), &
2988 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
2989 variants=s2a(
"REF_POINT"), &
2990 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
2991 usage=
"REFERENCE_POINT x y z", &
2993 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 tersoff1988
integer, save, public quip_ref
integer, save, public dick1958
integer, save, public foiles1986
integer, save, public devynck2012
integer, save, public tosi1964a
integer, save, public siepmann1995
integer, save, public zeng2023
integer, save, public yamada2000
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
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