Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief creates the mm section of the input
10 : !> \note
11 : !> moved out of input_cp2k
12 : !> \par History
13 : !> 04.2004 created
14 : !> \author fawzi
15 : ! **************************************************************************************************
16 : MODULE input_cp2k_mm
17 : USE bibliography, ONLY: &
18 : Batatia2022, Batzner2022, Bochkarev2024, Clabaut2020, Clabaut2021, Devynck2012, Dick1958, &
19 : Drautz2019, Foiles1986, Lysogorskiy2021, Mitchell1993, Musaelian2023, Siepmann1995, &
20 : Tan2025, Tersoff1988, Tosi1964a, Tosi1964b, Wang2018, Yamada2000, Zeng2023
21 : USE cp_output_handling, ONLY: cp_print_key_section_create,&
22 : debug_print_level,&
23 : high_print_level,&
24 : low_print_level,&
25 : medium_print_level,&
26 : silent_print_level
27 : USE cp_units, ONLY: cp_unit_to_cp2k
28 : USE force_field_kind_types, ONLY: &
29 : do_ff_amber, do_ff_charmm, do_ff_cubic, do_ff_fues, do_ff_g87, do_ff_g96, do_ff_harmonic, &
30 : do_ff_legendre, do_ff_mixed_bend_stretch, do_ff_mm2, do_ff_mm3, do_ff_mm4, do_ff_morse, &
31 : do_ff_opls, do_ff_quartic, do_ff_undef
32 : USE fparser, ONLY: docf
33 : USE input_constants, ONLY: use_mom_ref_coac,&
34 : use_mom_ref_com,&
35 : use_mom_ref_user,&
36 : use_mom_ref_zero
37 : USE input_cp2k_field, ONLY: create_per_efield_section
38 : USE input_cp2k_poisson, ONLY: create_poisson_section
39 : USE input_keyword_types, ONLY: keyword_create,&
40 : keyword_release,&
41 : keyword_type
42 : USE input_section_types, ONLY: section_add_keyword,&
43 : section_add_subsection,&
44 : section_create,&
45 : section_release,&
46 : section_type
47 : USE input_val_types, ONLY: char_t,&
48 : integer_t,&
49 : lchar_t,&
50 : real_t
51 : USE kinds, ONLY: default_string_length,&
52 : dp
53 : USE string_utilities, ONLY: newline,&
54 : s2a
55 : #include "./base/base_uses.f90"
56 :
57 : IMPLICIT NONE
58 : PRIVATE
59 :
60 : LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .TRUE.
61 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_mm'
62 :
63 : PUBLIC :: create_mm_section, create_dipoles_section
64 : PUBLIC :: create_NONBONDED14_section, create_LJ_section, create_Williams_section, &
65 : create_Goodwin_section, &
66 : create_GENPOT_section, create_TABPOT_section, create_neighbor_lists_section
67 : PUBLIC :: create_CHARGE_section
68 : !***
69 : CONTAINS
70 :
71 : ! **************************************************************************************************
72 : !> \brief Create the input section for FIST.. Come on.. Let's get woohooo
73 : !> \param section the section to create
74 : !> \author teo
75 : ! **************************************************************************************************
76 10486 : SUBROUTINE create_mm_section(section)
77 : TYPE(section_type), POINTER :: section
78 :
79 : TYPE(section_type), POINTER :: subsection
80 :
81 10486 : CPASSERT(.NOT. ASSOCIATED(section))
82 : CALL section_create(section, __LOCATION__, name="mm", &
83 : description="This section contains all information to run a MM calculation.", &
84 10486 : n_keywords=5, n_subsections=0, repeats=.FALSE.)
85 :
86 10486 : NULLIFY (subsection)
87 :
88 10486 : CALL create_forcefield_section(subsection)
89 10486 : CALL section_add_subsection(section, subsection)
90 10486 : CALL section_release(subsection)
91 :
92 10486 : CALL create_neighbor_lists_section(subsection)
93 10486 : CALL section_add_subsection(section, subsection)
94 10486 : CALL section_release(subsection)
95 :
96 10486 : CALL create_poisson_section(subsection)
97 10486 : CALL section_add_subsection(section, subsection)
98 10486 : CALL section_release(subsection)
99 :
100 10486 : CALL create_per_efield_section(subsection)
101 10486 : CALL section_add_subsection(section, subsection)
102 10486 : CALL section_release(subsection)
103 :
104 10486 : CALL create_print_mm_section(subsection)
105 10486 : CALL section_add_subsection(section, subsection)
106 10486 : CALL section_release(subsection)
107 :
108 10486 : END SUBROUTINE create_mm_section
109 :
110 : ! **************************************************************************************************
111 : !> \brief Create the print mm section
112 : !> \param section the section to create
113 : !> \author teo
114 : ! **************************************************************************************************
115 10486 : SUBROUTINE create_print_mm_section(section)
116 : TYPE(section_type), POINTER :: section
117 :
118 : TYPE(keyword_type), POINTER :: keyword
119 : TYPE(section_type), POINTER :: print_key
120 :
121 10486 : CPASSERT(.NOT. ASSOCIATED(section))
122 : CALL section_create(section, __LOCATION__, name="print", &
123 : description="Section of possible print options in MM code.", &
124 10486 : n_keywords=0, n_subsections=1, repeats=.FALSE.)
125 :
126 10486 : NULLIFY (print_key, keyword)
127 :
128 : CALL cp_print_key_section_create(print_key, __LOCATION__, "DERIVATIVES", &
129 : description="Controls the printing of derivatives.", &
130 10486 : print_level=high_print_level, filename="__STD_OUT__")
131 10486 : CALL section_add_subsection(section, print_key)
132 10486 : CALL section_release(print_key)
133 :
134 : CALL cp_print_key_section_create(print_key, __LOCATION__, "EWALD_INFO", &
135 : description="Controls the printing of Ewald energy components during the "// &
136 : "evaluation of the electrostatics.", &
137 10486 : print_level=high_print_level, filename="__STD_OUT__")
138 10486 : CALL section_add_subsection(section, print_key)
139 10486 : CALL section_release(print_key)
140 :
141 10486 : CALL create_dipoles_section(print_key, "DIPOLE", medium_print_level)
142 10486 : CALL section_add_subsection(section, print_key)
143 10486 : CALL section_release(print_key)
144 :
145 : CALL cp_print_key_section_create(print_key, __LOCATION__, "NEIGHBOR_LISTS", &
146 : description="Activates the printing of the neighbor lists.", &
147 10486 : print_level=high_print_level, filename="", unit_str="angstrom")
148 10486 : CALL section_add_subsection(section, print_key)
149 10486 : CALL section_release(print_key)
150 :
151 : CALL cp_print_key_section_create(print_key, __LOCATION__, "ITER_INFO", &
152 : description="Activates the printing of iteration info during the self-consistent "// &
153 : "calculation of a polarizable forcefield.", &
154 10486 : print_level=medium_print_level, filename="__STD_OUT__")
155 10486 : CALL section_add_subsection(section, print_key)
156 10486 : CALL section_release(print_key)
157 :
158 : CALL cp_print_key_section_create(print_key, __LOCATION__, "SUBCELL", &
159 : description="Activates the printing of the subcells used for the "// &
160 : "generation of neighbor lists.", &
161 10486 : print_level=high_print_level, filename="__STD_OUT__")
162 10486 : CALL section_add_subsection(section, print_key)
163 10486 : CALL section_release(print_key)
164 :
165 : CALL cp_print_key_section_create(print_key, __LOCATION__, "PROGRAM_BANNER", &
166 : description="Controls the printing of the banner of the MM program", &
167 10486 : print_level=silent_print_level, filename="__STD_OUT__")
168 10486 : CALL section_add_subsection(section, print_key)
169 10486 : CALL section_release(print_key)
170 :
171 : CALL cp_print_key_section_create(print_key, __LOCATION__, "PROGRAM_RUN_INFO", &
172 : description="Controls the printing of information regarding the run.", &
173 10486 : print_level=low_print_level, filename="__STD_OUT__")
174 10486 : CALL section_add_subsection(section, print_key)
175 10486 : CALL section_release(print_key)
176 :
177 : CALL cp_print_key_section_create(print_key, __LOCATION__, "FF_PARAMETER_FILE", description= &
178 : "Controls the printing of Force Field parameter file", &
179 10486 : print_level=debug_print_level + 1, filename="", common_iter_levels=2)
180 10486 : CALL section_add_subsection(section, print_key)
181 10486 : CALL section_release(print_key)
182 :
183 : CALL cp_print_key_section_create(print_key, __LOCATION__, "FF_INFO", description= &
184 : "Controls the printing of information in the forcefield settings", &
185 10486 : print_level=high_print_level, filename="__STD_OUT__")
186 :
187 : CALL keyword_create(keyword, __LOCATION__, name="spline_info", &
188 : description="if the printkey is active prints information regarding the splines"// &
189 : " used in the nonbonded interactions", &
190 10486 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
191 10486 : CALL section_add_keyword(print_key, keyword)
192 10486 : CALL keyword_release(keyword)
193 :
194 : CALL keyword_create(keyword, __LOCATION__, name="spline_data", &
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 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
198 10486 : CALL section_add_keyword(print_key, keyword)
199 10486 : CALL keyword_release(keyword)
200 :
201 10486 : CALL section_add_subsection(section, print_key)
202 10486 : CALL section_release(print_key)
203 :
204 10486 : END SUBROUTINE create_print_mm_section
205 :
206 : ! **************************************************************************************************
207 : !> \brief Create the forcefield section. This section is useful to set up the
208 : !> proper force_field for FIST calculations
209 : !> \param section the section to create
210 : !> \author teo
211 : ! **************************************************************************************************
212 10486 : SUBROUTINE create_forcefield_section(section)
213 : TYPE(section_type), POINTER :: section
214 :
215 : TYPE(keyword_type), POINTER :: keyword
216 : TYPE(section_type), POINTER :: subsection
217 :
218 10486 : CPASSERT(.NOT. ASSOCIATED(section))
219 : CALL section_create(section, __LOCATION__, name="FORCEFIELD", &
220 : description="Section specifying information regarding how to set up properly"// &
221 : " a force_field for the classical calculations.", &
222 10486 : n_keywords=2, n_subsections=2, repeats=.FALSE.)
223 :
224 10486 : NULLIFY (subsection, keyword)
225 :
226 : CALL keyword_create( &
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)"), &
236 : enum_i_vals=[do_ff_undef, &
237 : do_ff_charmm, &
238 : do_ff_g87, &
239 : do_ff_g96, &
240 : do_ff_amber], &
241 10486 : default_i_val=do_ff_undef)
242 10486 : CALL section_add_keyword(section, keyword)
243 10486 : CALL keyword_release(keyword)
244 :
245 : CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", &
246 : description="Specifies the filename that contains the parameters of the FF.", &
247 10486 : usage="PARM_FILE_NAME {FILENAME}", type_of_var=lchar_t)
248 10486 : CALL section_add_keyword(section, keyword)
249 10486 : CALL keyword_release(keyword)
250 :
251 : CALL keyword_create(keyword, __LOCATION__, name="VDW_SCALE14", &
252 : description="Scaling factor for the VDW 1-4 ", &
253 10486 : usage="VDW_SCALE14 1.0", default_r_val=1.0_dp)
254 10486 : CALL section_add_keyword(section, keyword)
255 10486 : CALL keyword_release(keyword)
256 :
257 : CALL keyword_create(keyword, __LOCATION__, name="EI_SCALE14", &
258 : description="Scaling factor for the electrostatics 1-4 ", &
259 10486 : usage="EI_SCALE14 1.0", default_r_val=0.0_dp)
260 10486 : CALL section_add_keyword(section, keyword)
261 10486 : CALL keyword_release(keyword)
262 :
263 : CALL keyword_create(keyword, __LOCATION__, name="SHIFT_CUTOFF", &
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 "// &
268 : "the cutoff.", &
269 10486 : usage="SHIFT_CUTOFF <LOGICAL>", default_l_val=.TRUE.)
270 10486 : CALL section_add_keyword(section, keyword)
271 10486 : CALL keyword_release(keyword)
272 :
273 : CALL keyword_create(keyword, __LOCATION__, name="DO_NONBONDED", &
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 10486 : usage="DO_NONBONDED T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
281 10486 : CALL section_add_keyword(section, keyword)
282 10486 : CALL keyword_release(keyword)
283 :
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 10486 : usage="DO_ELECTROSTATICS T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
289 10486 : CALL section_add_keyword(section, keyword)
290 10486 : CALL keyword_release(keyword)
291 :
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 10486 : lone_keyword_l_val=.TRUE.)
298 10486 : CALL section_add_keyword(section, keyword)
299 10486 : CALL keyword_release(keyword)
300 :
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 10486 : usage="MULTIPLE_POTENTIAL T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
305 10486 : CALL section_add_keyword(section, keyword)
306 10486 : CALL keyword_release(keyword)
307 : !Universal scattering potential at very short distances
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 10486 : usage="ZBL_SCATTERING T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
312 10486 : CALL section_add_keyword(section, keyword)
313 10486 : CALL keyword_release(keyword)
314 :
315 : !
316 : ! subsections
317 : !
318 10486 : CALL create_SPLINE_section(subsection)
319 10486 : CALL section_add_subsection(section, subsection)
320 10486 : CALL section_release(subsection)
321 :
322 10486 : CALL create_NONBONDED_section(subsection)
323 10486 : CALL section_add_subsection(section, subsection)
324 10486 : CALL section_release(subsection)
325 :
326 10486 : CALL create_NONBONDED14_section(subsection)
327 10486 : CALL section_add_subsection(section, subsection)
328 10486 : CALL section_release(subsection)
329 :
330 10486 : CALL create_CHARGE_section(subsection)
331 10486 : CALL section_add_subsection(section, subsection)
332 10486 : CALL section_release(subsection)
333 :
334 10486 : CALL create_CHARGES_section(subsection)
335 10486 : CALL section_add_subsection(section, subsection)
336 10486 : CALL section_release(subsection)
337 :
338 10486 : CALL create_SHELL_section(subsection)
339 10486 : CALL section_add_subsection(section, subsection)
340 10486 : CALL section_release(subsection)
341 :
342 10486 : CALL create_BOND_section(subsection, "BOND")
343 10486 : CALL section_add_subsection(section, subsection)
344 10486 : CALL section_release(subsection)
345 :
346 10486 : CALL create_BEND_section(subsection)
347 10486 : CALL section_add_subsection(section, subsection)
348 10486 : CALL section_release(subsection)
349 :
350 10486 : CALL create_TORSION_section(subsection)
351 10486 : CALL section_add_subsection(section, subsection)
352 10486 : CALL section_release(subsection)
353 :
354 10486 : CALL create_IMPROPER_section(subsection)
355 10486 : CALL section_add_subsection(section, subsection)
356 10486 : CALL section_release(subsection)
357 :
358 10486 : CALL create_OPBEND_section(subsection)
359 10486 : CALL section_add_subsection(section, subsection)
360 10486 : CALL section_release(subsection)
361 :
362 10486 : CALL create_DIPOLE_section(subsection)
363 10486 : CALL section_add_subsection(section, subsection)
364 10486 : CALL section_release(subsection)
365 :
366 10486 : CALL create_QUADRUPOLE_section(subsection)
367 10486 : CALL section_add_subsection(section, subsection)
368 10486 : CALL section_release(subsection)
369 :
370 10486 : END SUBROUTINE create_forcefield_section
371 :
372 : ! **************************************************************************************************
373 : !> \brief This section specifies the parameters for the splines
374 : !> \param section the section to create
375 : !> \author teo
376 : ! **************************************************************************************************
377 10486 : SUBROUTINE create_SPLINE_section(section)
378 : TYPE(section_type), POINTER :: section
379 :
380 : TYPE(keyword_type), POINTER :: keyword
381 :
382 10486 : CPASSERT(.NOT. ASSOCIATED(section))
383 : CALL section_create(section, __LOCATION__, name="SPLINE", &
384 : description="specifies parameters to set up the splines used in the"// &
385 : " nonboned interactions (both pair body potential and many body potential)", &
386 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
387 :
388 10486 : NULLIFY (keyword)
389 :
390 : CALL keyword_create(keyword, __LOCATION__, name="R0_NB", &
391 : description="Specify the minimum value of the distance interval "// &
392 : "that brackets the value of emax_spline.", &
393 : usage="R0_NB <REAL>", default_r_val=cp_unit_to_cp2k(value=0.9_dp, &
394 : unit_str="bohr"), &
395 10486 : unit_str="angstrom")
396 10486 : CALL section_add_keyword(section, keyword)
397 10486 : CALL keyword_release(keyword)
398 :
399 : CALL keyword_create(keyword, __LOCATION__, name="RCUT_NB", &
400 : description="Cutoff radius for nonbonded interactions. This value overrides"// &
401 : " the value specified in the potential definition and is global for all potentials.", &
402 : usage="RCUT_NB {real}", default_r_val=cp_unit_to_cp2k(value=-1.0_dp, &
403 : unit_str="angstrom"), &
404 10486 : unit_str="angstrom")
405 10486 : CALL section_add_keyword(section, keyword)
406 10486 : CALL keyword_release(keyword)
407 :
408 : CALL keyword_create(keyword, __LOCATION__, name="EMAX_SPLINE", &
409 : description="Specify the maximum value of the potential up to which"// &
410 : " splines will be constructed", &
411 : usage="EMAX_SPLINE <REAL>", &
412 10486 : default_r_val=0.5_dp, unit_str="hartree")
413 10486 : CALL section_add_keyword(section, keyword)
414 10486 : CALL keyword_release(keyword)
415 :
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 10486 : usage="EMAX_ACCURACY <REAL>", default_r_val=0.02_dp, unit_str="hartree")
421 10486 : CALL section_add_keyword(section, keyword)
422 10486 : CALL keyword_release(keyword)
423 :
424 : CALL keyword_create(keyword, __LOCATION__, name="EPS_SPLINE", &
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 10486 : usage="EPS_SPLINE <REAL>", default_r_val=1.0E-7_dp, unit_str="hartree")
429 10486 : CALL section_add_keyword(section, keyword)
430 10486 : CALL keyword_release(keyword)
431 :
432 : CALL keyword_create( &
433 : keyword, __LOCATION__, name="NPOINTS", &
434 : description="Override the default search for an accurate spline by specifying a fixed number of spline points.", &
435 10486 : usage="NPOINTS 1024", default_i_val=-1)
436 10486 : CALL section_add_keyword(section, keyword)
437 10486 : CALL keyword_release(keyword)
438 :
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 10486 : usage="UNIQUE_SPLINE <LOGICAL>", lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
443 10486 : CALL section_add_keyword(section, keyword)
444 10486 : CALL keyword_release(keyword)
445 :
446 10486 : END SUBROUTINE create_SPLINE_section
447 :
448 : ! **************************************************************************************************
449 : !> \brief This section specifies the torsion of the MM atoms
450 : !> \param section the section to create
451 : !> \author teo
452 : ! **************************************************************************************************
453 10486 : SUBROUTINE create_TORSION_section(section)
454 : TYPE(section_type), POINTER :: section
455 :
456 : TYPE(keyword_type), POINTER :: keyword
457 :
458 10486 : CPASSERT(.NOT. ASSOCIATED(section))
459 : CALL section_create(section, __LOCATION__, name="TORSION", &
460 : description="Specifies the torsion potential of the MM system.", &
461 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
462 :
463 10486 : NULLIFY (keyword)
464 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
465 : description="Defines the atomic kinds involved in the tors.", &
466 : usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, &
467 10486 : n_var=4)
468 10486 : CALL section_add_keyword(section, keyword)
469 10486 : CALL keyword_release(keyword)
470 :
471 : CALL keyword_create(keyword, __LOCATION__, name="KIND", &
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]]"), &
480 : enum_i_vals=[do_ff_charmm, &
481 : do_ff_g87, &
482 : do_ff_g96, &
483 : do_ff_amber, &
484 : do_ff_opls], &
485 10486 : default_i_val=do_ff_charmm)
486 10486 : CALL section_add_keyword(section, keyword)
487 10486 : CALL keyword_release(keyword)
488 :
489 : CALL keyword_create(keyword, __LOCATION__, name="K", &
490 : description="Defines the force constant of the potential", &
491 : usage="K {real}", type_of_var=real_t, &
492 10486 : n_var=1, unit_str="hartree")
493 10486 : CALL section_add_keyword(section, keyword)
494 10486 : CALL keyword_release(keyword)
495 :
496 : CALL keyword_create(keyword, __LOCATION__, name="PHI0", &
497 : description="Defines the phase of the potential.", &
498 : usage="PHI0 {real}", type_of_var=real_t, &
499 10486 : n_var=1, unit_str="rad", default_r_val=0.0_dp)
500 10486 : CALL section_add_keyword(section, keyword)
501 10486 : CALL keyword_release(keyword)
502 :
503 : CALL keyword_create(keyword, __LOCATION__, name="M", &
504 : description="Defines the multiplicity of the potential.", &
505 : usage="M {integer}", type_of_var=integer_t, &
506 10486 : n_var=1)
507 10486 : CALL section_add_keyword(section, keyword)
508 10486 : CALL keyword_release(keyword)
509 :
510 10486 : END SUBROUTINE create_TORSION_section
511 :
512 : ! **************************************************************************************************
513 : !> \brief This section specifies the improper torsion of the MM atoms
514 : !> \param section the section to create
515 : !> \author louis vanduyfhuys
516 : ! **************************************************************************************************
517 10486 : SUBROUTINE create_IMPROPER_section(section)
518 : TYPE(section_type), POINTER :: section
519 :
520 : TYPE(keyword_type), POINTER :: keyword
521 :
522 10486 : CPASSERT(.NOT. ASSOCIATED(section))
523 : CALL section_create(section, __LOCATION__, name="IMPROPER", &
524 : description="Specifies the improper torsion potential of the MM system.", &
525 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
526 :
527 10486 : NULLIFY (keyword)
528 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
529 : description="Defines the atomic kinds involved in the improper tors.", &
530 : usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, &
531 10486 : n_var=4)
532 10486 : CALL section_add_keyword(section, keyword)
533 10486 : CALL keyword_release(keyword)
534 :
535 : CALL keyword_create(keyword, __LOCATION__, name="KIND", &
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"), &
543 : enum_i_vals=[do_ff_charmm, &
544 : do_ff_g87, &
545 : do_ff_g96, &
546 : do_ff_harmonic], &
547 10486 : default_i_val=do_ff_charmm)
548 10486 : CALL section_add_keyword(section, keyword)
549 10486 : CALL keyword_release(keyword)
550 :
551 : CALL keyword_create(keyword, __LOCATION__, name="K", &
552 : description="Defines the force constant of the potential", &
553 : usage="K {real}", type_of_var=real_t, &
554 10486 : n_var=1, unit_str="hartree*rad^-2")
555 10486 : CALL section_add_keyword(section, keyword)
556 10486 : CALL keyword_release(keyword)
557 :
558 : CALL keyword_create(keyword, __LOCATION__, name="PHI0", &
559 : description="Defines the phase of the potential.", &
560 : usage="PHI0 {real}", type_of_var=real_t, &
561 10486 : n_var=1, unit_str="rad")
562 10486 : CALL section_add_keyword(section, keyword)
563 10486 : CALL keyword_release(keyword)
564 :
565 10486 : END SUBROUTINE create_IMPROPER_section
566 :
567 : ! **************************************************************************************************
568 : !> \brief This section specifies the out of plane bend of the MM atoms
569 : !> \param section the section to create
570 : !> \author louis vanduyfhuys
571 : ! **************************************************************************************************
572 10486 : SUBROUTINE create_OPBEND_section(section)
573 : TYPE(section_type), POINTER :: section
574 :
575 : TYPE(keyword_type), POINTER :: keyword
576 :
577 10486 : CPASSERT(.NOT. ASSOCIATED(section))
578 : CALL section_create(section, __LOCATION__, name="OPBEND", &
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 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
583 :
584 10486 : NULLIFY (keyword)
585 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
586 : description="Defines the atomic kinds involved in the opbend.", &
587 : usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, &
588 10486 : n_var=4)
589 10486 : CALL section_add_keyword(section, keyword)
590 10486 : CALL keyword_release(keyword)
591 :
592 : CALL keyword_create(keyword, __LOCATION__, name="KIND", &
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"), &
600 : enum_i_vals=[do_ff_harmonic, &
601 : do_ff_mm2, &
602 : do_ff_mm3, &
603 : do_ff_mm4], &
604 10486 : default_i_val=do_ff_harmonic)
605 10486 : CALL section_add_keyword(section, keyword)
606 10486 : CALL keyword_release(keyword)
607 :
608 : CALL keyword_create(keyword, __LOCATION__, name="K", &
609 : description="Defines the force constant of the potential", &
610 : usage="K {real}", type_of_var=real_t, &
611 10486 : n_var=1, unit_str="hartree*rad^-2")
612 10486 : CALL section_add_keyword(section, keyword)
613 10486 : CALL keyword_release(keyword)
614 :
615 : CALL keyword_create(keyword, __LOCATION__, name="PHI0", &
616 : description="Defines the phase of the potential.", &
617 : usage="PHI0 {real}", type_of_var=real_t, &
618 10486 : n_var=1, unit_str="rad")
619 10486 : CALL section_add_keyword(section, keyword)
620 10486 : CALL keyword_release(keyword)
621 :
622 10486 : END SUBROUTINE create_OPBEND_section
623 :
624 : ! **************************************************************************************************
625 : !> \brief This section specifies the bend of the MM atoms
626 : !> \param section the section to create
627 : !> \author teo
628 : ! **************************************************************************************************
629 10486 : SUBROUTINE create_BEND_section(section)
630 : TYPE(section_type), POINTER :: section
631 :
632 : TYPE(keyword_type), POINTER :: keyword
633 : TYPE(section_type), POINTER :: subsection
634 :
635 10486 : CPASSERT(.NOT. ASSOCIATED(section))
636 : CALL section_create(section, __LOCATION__, name="BEND", &
637 : description="Specifies the bend potential of the MM system.", &
638 10486 : n_keywords=11, n_subsections=1, repeats=.TRUE.)
639 :
640 10486 : NULLIFY (keyword, subsection)
641 :
642 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
643 : description="Defines the atomic kinds involved in the bend.", &
644 : usage="ATOMS {KIND1} {KIND2} {KIND3}", type_of_var=char_t, &
645 10486 : n_var=3)
646 10486 : CALL section_add_keyword(section, keyword)
647 10486 : CALL keyword_release(keyword)
648 :
649 : CALL keyword_create( &
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", &
654 : "LEGENDRE"), &
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)) "), &
667 : enum_i_vals=[do_ff_harmonic, &
668 : do_ff_charmm, &
669 : do_ff_amber, &
670 : do_ff_g87, &
671 : do_ff_g96, &
672 : do_ff_cubic, &
673 : do_ff_mixed_bend_stretch, &
674 : do_ff_mm3, &
675 : do_ff_legendre], &
676 10486 : default_i_val=do_ff_charmm)
677 10486 : CALL section_add_keyword(section, keyword)
678 10486 : CALL keyword_release(keyword)
679 :
680 : CALL keyword_create(keyword, __LOCATION__, name="K", &
681 : description="Defines the force constant of the potential", &
682 : usage="K {real}", type_of_var=real_t, &
683 10486 : n_var=1, unit_str="hartree*rad^-2")
684 10486 : CALL section_add_keyword(section, keyword)
685 10486 : CALL keyword_release(keyword)
686 :
687 : CALL keyword_create(keyword, __LOCATION__, name="CB", &
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 10486 : n_var=1, unit_str="rad^-1")
691 10486 : CALL section_add_keyword(section, keyword)
692 10486 : CALL keyword_release(keyword)
693 :
694 : CALL keyword_create(keyword, __LOCATION__, name="R012", &
695 : description="Mixed bend stretch parameter", &
696 : usage="R012 {real}", default_r_val=0.0_dp, type_of_var=real_t, &
697 10486 : n_var=1, unit_str="bohr")
698 10486 : CALL section_add_keyword(section, keyword)
699 10486 : CALL keyword_release(keyword)
700 : CALL keyword_create(keyword, __LOCATION__, name="R032", &
701 : description="Mixed bend stretch parameter", &
702 : usage="R032 {real}", default_r_val=0.0_dp, type_of_var=real_t, &
703 10486 : n_var=1, unit_str="bohr")
704 10486 : CALL section_add_keyword(section, keyword)
705 10486 : CALL keyword_release(keyword)
706 : CALL keyword_create(keyword, __LOCATION__, name="KBS12", &
707 : description="Mixed bend stretch parameter", &
708 : usage="KBS12 {real}", default_r_val=0.0_dp, type_of_var=real_t, &
709 10486 : n_var=1, unit_str="hartree*bohr^-1*rad^-1")
710 10486 : CALL section_add_keyword(section, keyword)
711 10486 : CALL keyword_release(keyword)
712 : CALL keyword_create(keyword, __LOCATION__, name="KBS32", &
713 : description="Mixed bend stretch parameter", &
714 : usage="KBS32 {real}", default_r_val=0.0_dp, type_of_var=real_t, &
715 10486 : n_var=1, unit_str="hartree*bohr^-1*rad^-1")
716 10486 : CALL section_add_keyword(section, keyword)
717 10486 : CALL keyword_release(keyword)
718 : CALL keyword_create(keyword, __LOCATION__, name="KSS", &
719 : description="Mixed bend stretch parameter", &
720 : usage="KSS {real}", default_r_val=0.0_dp, type_of_var=real_t, &
721 10486 : n_var=1, unit_str="hartree*bohr^-2")
722 10486 : CALL section_add_keyword(section, keyword)
723 10486 : CALL keyword_release(keyword)
724 :
725 : CALL keyword_create(keyword, __LOCATION__, name="THETA0", &
726 : description="Defines the equilibrium angle.", &
727 : usage="THETA0 {real}", type_of_var=real_t, &
728 10486 : n_var=1, unit_str='rad')
729 10486 : CALL section_add_keyword(section, keyword)
730 10486 : CALL keyword_release(keyword)
731 :
732 : CALL keyword_create(keyword, __LOCATION__, name="LEGENDRE", &
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 10486 : n_var=-1, unit_str="hartree")
739 10486 : CALL section_add_keyword(section, keyword)
740 10486 : CALL keyword_release(keyword)
741 :
742 : ! Create the Urey-Bradley section
743 10486 : CALL create_BOND_section(subsection, "UB")
744 10486 : CALL section_add_subsection(section, subsection)
745 10486 : CALL section_release(subsection)
746 :
747 10486 : END SUBROUTINE create_BEND_section
748 :
749 : ! **************************************************************************************************
750 : !> \brief This section specifies the bond of the MM atoms
751 : !> \param section the section to create
752 : !> \param label ...
753 : !> \author teo
754 : ! **************************************************************************************************
755 20972 : SUBROUTINE create_BOND_section(section, label)
756 : TYPE(section_type), POINTER :: section
757 : CHARACTER(LEN=*), INTENT(IN) :: label
758 :
759 : CHARACTER(LEN=default_string_length) :: tag
760 : TYPE(keyword_type), POINTER :: keyword
761 :
762 20972 : CPASSERT(.NOT. ASSOCIATED(section))
763 20972 : NULLIFY (keyword)
764 :
765 20972 : IF (TRIM(label) == "UB") THEN
766 10486 : tag = " Urey-Bradley "
767 : CALL section_create(section, __LOCATION__, name=TRIM(label), &
768 : description="Specifies the Urey-Bradley potential between the external atoms"// &
769 : " defining the angle", &
770 10486 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
771 :
772 : ELSE
773 10486 : tag = " Bond "
774 : CALL section_create(section, __LOCATION__, name=TRIM(label), &
775 : description="Specifies the bond potential", &
776 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
777 :
778 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
779 : description="Defines the atomic kinds involved in the bond.", &
780 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
781 10486 : n_var=2)
782 10486 : CALL section_add_keyword(section, keyword)
783 10486 : CALL keyword_release(keyword)
784 : END IF
785 :
786 : CALL keyword_create(keyword, __LOCATION__, name="KIND", &
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))"), &
800 : enum_i_vals=[do_ff_harmonic, &
801 : do_ff_charmm, &
802 : do_ff_amber, &
803 : do_ff_g87, &
804 : do_ff_g96, &
805 : do_ff_quartic, &
806 : do_ff_morse, &
807 : do_ff_cubic, &
808 : do_ff_fues], &
809 20972 : default_i_val=do_ff_charmm)
810 20972 : CALL section_add_keyword(section, keyword)
811 20972 : CALL keyword_release(keyword)
812 :
813 : CALL keyword_create(keyword, __LOCATION__, name="K", &
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 20972 : n_var=-1, unit_str="internal_cp2k")
819 20972 : CALL section_add_keyword(section, keyword)
820 20972 : CALL keyword_release(keyword)
821 :
822 : CALL keyword_create(keyword, __LOCATION__, name="CS", &
823 : description="Defines the cubic stretch term.", &
824 : usage="CS {real}", default_r_val=0.0_dp, type_of_var=real_t, &
825 20972 : n_var=1, unit_str="bohr^-1")
826 20972 : CALL section_add_keyword(section, keyword)
827 20972 : CALL keyword_release(keyword)
828 :
829 : CALL keyword_create(keyword, __LOCATION__, name="R0", &
830 : description="Defines the equilibrium distance.", &
831 : usage="R0 {real}", type_of_var=real_t, &
832 20972 : n_var=1, unit_str="bohr")
833 20972 : CALL section_add_keyword(section, keyword)
834 20972 : CALL keyword_release(keyword)
835 :
836 20972 : END SUBROUTINE create_BOND_section
837 :
838 : ! **************************************************************************************************
839 : !> \brief This section specifies the charge of the MM atoms
840 : !> \param section the section to create
841 : !> \author teo
842 : ! **************************************************************************************************
843 10486 : SUBROUTINE create_charges_section(section)
844 : TYPE(section_type), POINTER :: section
845 :
846 : TYPE(keyword_type), POINTER :: keyword
847 :
848 10486 : CPASSERT(.NOT. ASSOCIATED(section))
849 : CALL section_create(section, __LOCATION__, name="charges", &
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 10486 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
853 :
854 10486 : NULLIFY (keyword)
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}", &
858 10486 : type_of_var=real_t)
859 10486 : CALL section_add_keyword(section, keyword)
860 10486 : CALL keyword_release(keyword)
861 :
862 10486 : END SUBROUTINE create_charges_section
863 :
864 : ! **************************************************************************************************
865 : !> \brief This section specifies the charge of the MM atoms
866 : !> \param section the section to create
867 : !> \author teo
868 : ! **************************************************************************************************
869 31458 : SUBROUTINE create_charge_section(section)
870 : TYPE(section_type), POINTER :: section
871 :
872 : TYPE(keyword_type), POINTER :: keyword
873 :
874 31458 : CPASSERT(.NOT. ASSOCIATED(section))
875 : CALL section_create(section, __LOCATION__, name="charge", &
876 : description="This section specifies the charge of the MM atoms", &
877 31458 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
878 :
879 31458 : NULLIFY (keyword)
880 :
881 : CALL keyword_create(keyword, __LOCATION__, name="ATOM", &
882 : description="Defines the atomic kind of the charge.", &
883 : usage="ATOM {KIND1}", type_of_var=char_t, &
884 31458 : n_var=1)
885 31458 : CALL section_add_keyword(section, keyword)
886 31458 : CALL keyword_release(keyword)
887 :
888 : CALL keyword_create(keyword, __LOCATION__, name="CHARGE", &
889 : description="Defines the charge of the MM atom in electron charge unit.", &
890 : usage="CHARGE {real}", type_of_var=real_t, &
891 31458 : n_var=1)
892 31458 : CALL section_add_keyword(section, keyword)
893 31458 : CALL keyword_release(keyword)
894 :
895 31458 : END SUBROUTINE create_charge_section
896 :
897 : ! **************************************************************************************************
898 : !> \brief This section specifies the isotropic polarizability of the MM atoms
899 : !> \param section the section to create
900 : !> \author Marcel Baer
901 : ! **************************************************************************************************
902 10486 : SUBROUTINE create_quadrupole_section(section)
903 : TYPE(section_type), POINTER :: section
904 :
905 : TYPE(keyword_type), POINTER :: keyword
906 :
907 10486 : CPASSERT(.NOT. ASSOCIATED(section))
908 : CALL section_create( &
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 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
913 :
914 10486 : NULLIFY (keyword)
915 :
916 : CALL keyword_create(keyword, __LOCATION__, name="ATOM", &
917 : description="Defines the atomic kind of the SCF quadrupole.", &
918 : usage="ATOM {KIND1}", type_of_var=char_t, &
919 10486 : n_var=1)
920 10486 : CALL section_add_keyword(section, keyword)
921 10486 : CALL keyword_release(keyword)
922 :
923 : CALL keyword_create(keyword, __LOCATION__, name="CPOL", &
924 : description="Defines the isotropic polarizability of the MM atom.", &
925 : usage="CPOL {real}", type_of_var=real_t, &
926 10486 : n_var=1, unit_str='internal_cp2k')
927 10486 : CALL section_add_keyword(section, keyword)
928 10486 : CALL keyword_release(keyword)
929 :
930 10486 : END SUBROUTINE create_quadrupole_section
931 :
932 : ! **************************************************************************************************
933 : !> \brief This section specifies the isotropic polarizability of the MM atoms
934 : !> \param section the section to create
935 : !> \author Marcel Baer
936 : ! **************************************************************************************************
937 10486 : SUBROUTINE create_dipole_section(section)
938 : TYPE(section_type), POINTER :: section
939 :
940 : TYPE(keyword_type), POINTER :: keyword
941 : TYPE(section_type), POINTER :: subsection
942 :
943 10486 : CPASSERT(.NOT. ASSOCIATED(section))
944 : CALL section_create(section, __LOCATION__, name="DIPOLE", &
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 10486 : n_keywords=1, n_subsections=1, repeats=.TRUE.)
948 :
949 10486 : NULLIFY (subsection, keyword)
950 :
951 : CALL keyword_create(keyword, __LOCATION__, name="ATOM", &
952 : description="Defines the atomic kind of the SCF dipole.", &
953 : usage="ATOM {KIND1}", type_of_var=char_t, &
954 10486 : n_var=1)
955 10486 : CALL section_add_keyword(section, keyword)
956 10486 : CALL keyword_release(keyword)
957 :
958 : CALL keyword_create(keyword, __LOCATION__, name="APOL", &
959 : description="Defines the isotropic polarizability of the MM atom.", &
960 : usage="APOL {real}", type_of_var=real_t, &
961 10486 : n_var=1, unit_str='angstrom^3')
962 10486 : CALL section_add_keyword(section, keyword)
963 10486 : CALL keyword_release(keyword)
964 :
965 10486 : CALL create_DAMPING_section(subsection)
966 10486 : CALL section_add_subsection(section, subsection)
967 10486 : CALL section_release(subsection)
968 10486 : END SUBROUTINE create_dipole_section
969 :
970 : ! **************************************************************************************************
971 : !> \brief This section specifies the idamping parameters for polarizable atoms
972 : !> \param section the section to create
973 : !> \author Rodolphe Vuilleumier
974 : ! **************************************************************************************************
975 10486 : SUBROUTINE create_damping_section(section)
976 : TYPE(section_type), POINTER :: section
977 :
978 : TYPE(keyword_type), POINTER :: keyword
979 :
980 10486 : CPASSERT(.NOT. ASSOCIATED(section))
981 : CALL section_create(section, __LOCATION__, name="DAMPING", &
982 : description="This section specifies optional electric field damping for the polarizable atoms. ", &
983 10486 : n_keywords=4, n_subsections=0, repeats=.TRUE.)
984 :
985 10486 : NULLIFY (keyword)
986 :
987 : CALL keyword_create(keyword, __LOCATION__, name="ATOM", &
988 : description="Defines the atomic kind for this damping function.", &
989 : usage="ATOM {KIND1}", type_of_var=char_t, &
990 10486 : n_var=1)
991 10486 : CALL section_add_keyword(section, keyword)
992 10486 : CALL keyword_release(keyword)
993 :
994 : CALL keyword_create(keyword, __LOCATION__, name="TYPE", &
995 : description="Defines the damping type.", &
996 : usage="TYPE {string}", type_of_var=char_t, &
997 10486 : n_var=1, default_c_val="TANG-TOENNIES")
998 10486 : CALL section_add_keyword(section, keyword)
999 10486 : CALL keyword_release(keyword)
1000 :
1001 : CALL keyword_create(keyword, __LOCATION__, name="ORDER", &
1002 : description="Defines the order for this damping.", &
1003 : usage="ORDER {integer}", type_of_var=integer_t, &
1004 10486 : n_var=1, default_i_val=3)
1005 10486 : CALL section_add_keyword(section, keyword)
1006 10486 : CALL keyword_release(keyword)
1007 :
1008 : CALL keyword_create(keyword, __LOCATION__, name="BIJ", &
1009 : description="Defines the BIJ parameter for this damping.", &
1010 : usage="BIJ {real}", type_of_var=real_t, &
1011 10486 : n_var=1, unit_str='angstrom^-1')
1012 10486 : CALL section_add_keyword(section, keyword)
1013 10486 : CALL keyword_release(keyword)
1014 :
1015 : CALL keyword_create(keyword, __LOCATION__, name="CIJ", &
1016 : description="Defines the CIJ parameter for this damping.", &
1017 : usage="CIJ {real}", type_of_var=real_t, &
1018 10486 : n_var=1, unit_str='')
1019 10486 : CALL section_add_keyword(section, keyword)
1020 10486 : CALL keyword_release(keyword)
1021 :
1022 10486 : END SUBROUTINE create_damping_section
1023 :
1024 : ! **************************************************************************************************
1025 : !> \brief This section specifies the charge of the MM atoms
1026 : !> \param section the section to create
1027 : !> \author teo
1028 : ! **************************************************************************************************
1029 10486 : SUBROUTINE create_shell_section(section)
1030 : TYPE(section_type), POINTER :: section
1031 :
1032 : TYPE(keyword_type), POINTER :: keyword
1033 :
1034 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1035 : CALL section_create(section, __LOCATION__, name="SHELL", &
1036 : description="This section specifies the parameters for shell-model potentials", &
1037 : n_keywords=6, n_subsections=0, repeats=.TRUE., &
1038 41944 : citations=[Dick1958, Mitchell1993, Devynck2012])
1039 :
1040 10486 : NULLIFY (keyword)
1041 :
1042 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
1043 : description="The kind for which the shell potential parameters are given ", &
1044 10486 : usage="H", default_c_val="DEFAULT")
1045 10486 : CALL section_add_keyword(section, keyword)
1046 10486 : CALL keyword_release(keyword)
1047 :
1048 : CALL keyword_create(keyword, __LOCATION__, name="CORE_CHARGE", &
1049 : variants=["CORE"], &
1050 : description="Partial charge assigned to the core (electron charge units)", &
1051 : usage="CORE_CHARGE {real}", &
1052 20972 : default_r_val=0.0_dp)
1053 10486 : CALL section_add_keyword(section, keyword)
1054 10486 : CALL keyword_release(keyword)
1055 :
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 20972 : default_r_val=0.0_dp)
1061 10486 : CALL section_add_keyword(section, keyword)
1062 10486 : CALL keyword_release(keyword)
1063 :
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 20972 : default_r_val=0.1_dp)
1069 10486 : CALL section_add_keyword(section, keyword)
1070 10486 : CALL keyword_release(keyword)
1071 :
1072 : CALL keyword_create(keyword, __LOCATION__, name="K2_SPRING", &
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.", &
1076 : repeats=.FALSE., &
1077 : usage="K2_SPRING {real}", &
1078 : default_r_val=-1.0_dp, &
1079 10486 : unit_str="hartree*bohr^-2")
1080 10486 : CALL section_add_keyword(section, keyword)
1081 10486 : CALL keyword_release(keyword)
1082 :
1083 : CALL keyword_create(keyword, __LOCATION__, name="K4_SPRING", &
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.", &
1088 : repeats=.FALSE., &
1089 : usage="K4_SPRING {real}", &
1090 : default_r_val=0.0_dp, &
1091 10486 : unit_str="hartree*bohr^-4")
1092 10486 : CALL section_add_keyword(section, keyword)
1093 10486 : CALL keyword_release(keyword)
1094 :
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 10486 : unit_str="angstrom")
1101 10486 : CALL section_add_keyword(section, keyword)
1102 10486 : CALL keyword_release(keyword)
1103 :
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 10486 : unit_str="angstrom")
1111 10486 : CALL section_add_keyword(section, keyword)
1112 10486 : CALL keyword_release(keyword)
1113 :
1114 10486 : END SUBROUTINE create_shell_section
1115 :
1116 : ! **************************************************************************************************
1117 : !> \brief This section specifies the input parameters for 1-4 NON-BONDED
1118 : !> Interactions
1119 : !> \param section the section to create
1120 : !> \author teo
1121 : ! **************************************************************************************************
1122 20972 : SUBROUTINE create_NONBONDED14_section(section)
1123 : TYPE(section_type), POINTER :: section
1124 :
1125 : TYPE(section_type), POINTER :: subsection
1126 :
1127 20972 : CPASSERT(.NOT. ASSOCIATED(section))
1128 : CALL section_create(section, __LOCATION__, name="nonbonded14", &
1129 : description="This section specifies the input parameters for 1-4 NON-BONDED interactions.", &
1130 20972 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1131 :
1132 20972 : NULLIFY (subsection)
1133 20972 : CALL create_LJ_section(subsection)
1134 20972 : CALL section_add_subsection(section, subsection)
1135 20972 : CALL section_release(subsection)
1136 :
1137 20972 : CALL create_Williams_section(subsection)
1138 20972 : CALL section_add_subsection(section, subsection)
1139 20972 : CALL section_release(subsection)
1140 :
1141 20972 : CALL create_Goodwin_section(subsection)
1142 20972 : CALL section_add_subsection(section, subsection)
1143 20972 : CALL section_release(subsection)
1144 :
1145 20972 : CALL create_GENPOT_section(subsection)
1146 20972 : CALL section_add_subsection(section, subsection)
1147 20972 : CALL section_release(subsection)
1148 :
1149 20972 : END SUBROUTINE create_NONBONDED14_section
1150 :
1151 : ! **************************************************************************************************
1152 : !> \brief This section specifies the input parameters for 1-4 NON-BONDED
1153 : !> Interactions
1154 : !> \param section the section to create
1155 : !> \author teo
1156 : ! **************************************************************************************************
1157 10486 : SUBROUTINE create_NONBONDED_section(section)
1158 : TYPE(section_type), POINTER :: section
1159 :
1160 : TYPE(section_type), POINTER :: subsection
1161 :
1162 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1163 : CALL section_create(section, __LOCATION__, name="nonbonded", &
1164 : description="This section specifies the input parameters for NON-BONDED interactions.", &
1165 10486 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1166 :
1167 10486 : NULLIFY (subsection)
1168 10486 : CALL create_LJ_section(subsection)
1169 10486 : CALL section_add_subsection(section, subsection)
1170 10486 : CALL section_release(subsection)
1171 :
1172 10486 : CALL create_Williams_section(subsection)
1173 10486 : CALL section_add_subsection(section, subsection)
1174 10486 : CALL section_release(subsection)
1175 :
1176 10486 : CALL create_EAM_section(subsection)
1177 10486 : CALL section_add_subsection(section, subsection)
1178 10486 : CALL section_release(subsection)
1179 :
1180 10486 : CALL create_NEQUIP_section(subsection)
1181 10486 : CALL section_add_subsection(section, subsection)
1182 10486 : CALL section_release(subsection)
1183 :
1184 10486 : CALL create_ACE_section(subsection)
1185 10486 : CALL section_add_subsection(section, subsection)
1186 10486 : CALL section_release(subsection)
1187 :
1188 10486 : CALL create_MACE_section(subsection)
1189 10486 : CALL section_add_subsection(section, subsection)
1190 10486 : CALL section_release(subsection)
1191 :
1192 10486 : CALL create_DEEPMD_section(subsection)
1193 10486 : CALL section_add_subsection(section, subsection)
1194 10486 : CALL section_release(subsection)
1195 :
1196 10486 : CALL create_Goodwin_section(subsection)
1197 10486 : CALL section_add_subsection(section, subsection)
1198 10486 : CALL section_release(subsection)
1199 :
1200 10486 : CALL create_IPBV_section(subsection)
1201 10486 : CALL section_add_subsection(section, subsection)
1202 10486 : CALL section_release(subsection)
1203 :
1204 10486 : CALL create_BMHFT_section(subsection)
1205 10486 : CALL section_add_subsection(section, subsection)
1206 10486 : CALL section_release(subsection)
1207 :
1208 10486 : CALL create_BMHFTD_section(subsection)
1209 10486 : CALL section_add_subsection(section, subsection)
1210 10486 : CALL section_release(subsection)
1211 :
1212 10486 : CALL create_Buck4r_section(subsection)
1213 10486 : CALL section_add_subsection(section, subsection)
1214 10486 : CALL section_release(subsection)
1215 :
1216 10486 : CALL create_Buckmorse_section(subsection)
1217 10486 : CALL section_add_subsection(section, subsection)
1218 10486 : CALL section_release(subsection)
1219 :
1220 10486 : CALL create_GENPOT_section(subsection)
1221 10486 : CALL section_add_subsection(section, subsection)
1222 10486 : CALL section_release(subsection)
1223 :
1224 10486 : CALL create_Tersoff_section(subsection)
1225 10486 : CALL section_add_subsection(section, subsection)
1226 10486 : CALL section_release(subsection)
1227 :
1228 10486 : CALL create_Siepmann_section(subsection)
1229 10486 : CALL section_add_subsection(section, subsection)
1230 10486 : CALL section_release(subsection)
1231 :
1232 10486 : CALL create_Gal_section(subsection)
1233 10486 : CALL section_add_subsection(section, subsection)
1234 10486 : CALL section_release(subsection)
1235 :
1236 10486 : CALL create_Gal21_section(subsection)
1237 10486 : CALL section_add_subsection(section, subsection)
1238 10486 : CALL section_release(subsection)
1239 :
1240 10486 : CALL create_TABPOT_section(subsection)
1241 10486 : CALL section_add_subsection(section, subsection)
1242 10486 : CALL section_release(subsection)
1243 :
1244 10486 : END SUBROUTINE create_NONBONDED_section
1245 :
1246 : ! **************************************************************************************************
1247 : !> \brief This section specifies the input parameters for generation of
1248 : !> neighbor lists
1249 : !> \param section the section to create
1250 : !> \author teo [07.2007] - Zurich University
1251 : ! **************************************************************************************************
1252 31474 : SUBROUTINE create_neighbor_lists_section(section)
1253 : TYPE(section_type), POINTER :: section
1254 :
1255 : TYPE(keyword_type), POINTER :: keyword
1256 :
1257 31474 : NULLIFY (keyword)
1258 31474 : CPASSERT(.NOT. ASSOCIATED(section))
1259 : CALL section_create(section, __LOCATION__, name="neighbor_lists", &
1260 : description="This section specifies the input parameters for the construction of"// &
1261 : " neighbor lists.", &
1262 31474 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1263 :
1264 : CALL keyword_create(keyword, __LOCATION__, name="VERLET_SKIN", &
1265 : description="Defines the Verlet Skin for the generation of the neighbor lists", &
1266 : usage="VERLET_SKIN {real}", default_r_val=cp_unit_to_cp2k(value=1.0_dp, &
1267 : unit_str="angstrom"), &
1268 31474 : unit_str="angstrom")
1269 31474 : CALL section_add_keyword(section, keyword)
1270 31474 : CALL keyword_release(keyword)
1271 :
1272 : CALL keyword_create(keyword, __LOCATION__, name="neighbor_lists_from_scratch", &
1273 : description="This keyword enables the building of the neighbouring list from scratch.", &
1274 : usage="neighbor_lists_from_scratch logical", &
1275 31474 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1276 31474 : CALL section_add_keyword(section, keyword)
1277 31474 : CALL keyword_release(keyword)
1278 :
1279 : CALL keyword_create(keyword, __LOCATION__, name="GEO_CHECK", &
1280 : description="This keyword enables the check that two atoms are never below the minimum"// &
1281 : " value used to construct the splines during the construction of the neighbouring list."// &
1282 : " Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum"// &
1283 : " value of the radius used to generate the splines.", &
1284 : usage="GEO_CHECK", &
1285 31474 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
1286 31474 : CALL section_add_keyword(section, keyword)
1287 31474 : CALL keyword_release(keyword)
1288 :
1289 31474 : END SUBROUTINE create_neighbor_lists_section
1290 :
1291 : ! **************************************************************************************************
1292 : !> \brief This section specifies the input parameters for a generic potential form
1293 : !> \param section the section to create
1294 : !> \author teo
1295 : ! **************************************************************************************************
1296 52446 : SUBROUTINE create_GENPOT_section(section)
1297 : TYPE(section_type), POINTER :: section
1298 :
1299 : TYPE(keyword_type), POINTER :: keyword
1300 :
1301 52446 : CPASSERT(.NOT. ASSOCIATED(section))
1302 : CALL section_create(section, __LOCATION__, name="GENPOT", &
1303 : description="This section specifies the input parameters for a generic potential type. "// &
1304 : docf(), &
1305 52446 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1306 :
1307 52446 : NULLIFY (keyword)
1308 :
1309 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1310 : description="Defines the atomic kind involved in the generic potential", &
1311 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1312 52446 : n_var=2)
1313 52446 : CALL section_add_keyword(section, keyword)
1314 52446 : CALL keyword_release(keyword)
1315 :
1316 : CALL keyword_create(keyword, __LOCATION__, name="FUNCTION", &
1317 : description="Specifies the functional form in mathematical notation.", &
1318 : usage="FUNCTION a\*EXP(-b\*x^2)/x+D\*log10(x)", type_of_var=lchar_t, &
1319 52446 : n_var=1)
1320 52446 : CALL section_add_keyword(section, keyword)
1321 52446 : CALL keyword_release(keyword)
1322 :
1323 : CALL keyword_create(keyword, __LOCATION__, name="VARIABLES", &
1324 : description="Defines the variable of the functional form.", &
1325 : usage="VARIABLES x", type_of_var=char_t, &
1326 52446 : n_var=-1)
1327 52446 : CALL section_add_keyword(section, keyword)
1328 52446 : CALL keyword_release(keyword)
1329 :
1330 : CALL keyword_create(keyword, __LOCATION__, name="PARAMETERS", &
1331 : description="Defines the parameters of the functional form", &
1332 : usage="PARAMETERS a b D", type_of_var=char_t, &
1333 52446 : n_var=-1, repeats=.TRUE.)
1334 52446 : CALL section_add_keyword(section, keyword)
1335 52446 : CALL keyword_release(keyword)
1336 :
1337 : CALL keyword_create(keyword, __LOCATION__, name="VALUES", &
1338 : description="Defines the values of parameter of the functional form", &
1339 : usage="VALUES ", type_of_var=real_t, &
1340 52446 : n_var=-1, repeats=.TRUE., unit_str="internal_cp2k")
1341 52446 : CALL section_add_keyword(section, keyword)
1342 52446 : CALL keyword_release(keyword)
1343 :
1344 : CALL keyword_create(keyword, __LOCATION__, name="UNITS", &
1345 : description="Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1346 : "It is assumed that the corresponding parameter value is specified in this unit.", &
1347 : usage="UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=char_t, &
1348 52446 : n_var=-1, repeats=.TRUE.)
1349 52446 : CALL section_add_keyword(section, keyword)
1350 52446 : CALL keyword_release(keyword)
1351 :
1352 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1353 : description="Defines the cutoff parameter of the generic potential", &
1354 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1355 : unit_str="angstrom"), &
1356 52446 : unit_str="angstrom")
1357 52446 : CALL section_add_keyword(section, keyword)
1358 52446 : CALL keyword_release(keyword)
1359 :
1360 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1361 : description="Defines the lower bound of the potential. If not set the range is the"// &
1362 : " full range generate by the spline", usage="RMIN {real}", &
1363 52446 : type_of_var=real_t, unit_str="angstrom")
1364 52446 : CALL section_add_keyword(section, keyword)
1365 52446 : CALL keyword_release(keyword)
1366 :
1367 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1368 : description="Defines the upper bound of the potential. If not set the range is the"// &
1369 : " full range generate by the spline", usage="RMAX {real}", &
1370 52446 : type_of_var=real_t, unit_str="angstrom")
1371 52446 : CALL section_add_keyword(section, keyword)
1372 52446 : CALL keyword_release(keyword)
1373 :
1374 52446 : END SUBROUTINE create_GENPOT_section
1375 :
1376 : ! **************************************************************************************************
1377 : !> \brief This section specifies the input parameters for EAM potential type
1378 : !> \param section the section to create
1379 : !> \author teo
1380 : ! **************************************************************************************************
1381 10486 : SUBROUTINE create_EAM_section(section)
1382 : TYPE(section_type), POINTER :: section
1383 :
1384 : TYPE(keyword_type), POINTER :: keyword
1385 :
1386 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1387 : CALL section_create(section, __LOCATION__, name="EAM", &
1388 : description="This section specifies the input parameters for EAM potential type.", &
1389 20972 : citations=[Foiles1986], n_keywords=1, n_subsections=0, repeats=.TRUE.)
1390 :
1391 10486 : NULLIFY (keyword)
1392 :
1393 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1394 : description="Defines the atomic kind involved in the nonbond potential", &
1395 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1396 10486 : n_var=2)
1397 10486 : CALL section_add_keyword(section, keyword)
1398 10486 : CALL keyword_release(keyword)
1399 :
1400 : CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", &
1401 : variants=["PARMFILE"], &
1402 : description="Specifies the filename that contains the tabulated EAM potential. "// &
1403 : "File structure: the first line of the potential file contains a title. "// &
1404 : "The second line contains: atomic number, mass and lattice constant. "// &
1405 : "These information are parsed but not used in CP2K. The third line contains: "// &
1406 : "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// &
1407 : "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// &
1408 : "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// &
1409 : "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// &
1410 : "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// &
1411 : "and its derivative [ev*au_c^-1].", &
1412 20972 : usage="PARM_FILE_NAME {FILENAME}", default_lc_val=" ")
1413 10486 : CALL section_add_keyword(section, keyword)
1414 10486 : CALL keyword_release(keyword)
1415 :
1416 10486 : END SUBROUTINE create_EAM_section
1417 :
1418 : ! **************************************************************************************************
1419 : !> \brief This section specifies the input parameters for NEQUIP potential type
1420 : !> \param section the section to create
1421 : !> \author teo
1422 : ! **************************************************************************************************
1423 10486 : SUBROUTINE create_NEQUIP_section(section)
1424 : TYPE(section_type), POINTER :: section
1425 :
1426 : TYPE(keyword_type), POINTER :: keyword
1427 :
1428 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1429 : CALL section_create(section, __LOCATION__, name="NEQUIP", &
1430 : description="This section specifies the input parameters for NEQUIP potential type "// &
1431 : "based on equivariant neural networks, and for ALLEGRO, a local large-scale variant. "// &
1432 : "Note: To enable the prediction of stress, along with energies and forces, the keyword "// &
1433 : "StressForceOutput must be included in the nequip config *.yaml file used to train the "// &
1434 : "model, regardless of whether the model has been trained on the stress. "// &
1435 : "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1436 41944 : citations=[Batzner2022, Musaelian2023, Tan2025], n_keywords=1, n_subsections=0, repeats=.FALSE.)
1437 :
1438 10486 : NULLIFY (keyword)
1439 :
1440 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1441 : description="Defines the atomic kinds involved in the NEQUIP potential. "// &
1442 : "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1443 : "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1444 : "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1445 : usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1446 10486 : n_var=-1)
1447 10486 : CALL section_add_keyword(section, keyword)
1448 10486 : CALL keyword_release(keyword)
1449 :
1450 : CALL keyword_create(keyword, __LOCATION__, name="MODEL_TYPE", &
1451 : variants=["MODEL"], &
1452 : description="Specifies the type of model used. Allowed values are NEQUIP or ALLEGRO.", &
1453 20972 : usage="MODEL_TYPE {NEQUIP}", default_lc_val=" ")
1454 10486 : CALL section_add_keyword(section, keyword)
1455 10486 : CALL keyword_release(keyword)
1456 :
1457 : CALL keyword_create(keyword, __LOCATION__, name="POT_FILE_NAME", &
1458 : variants=["MODEL_FILE_NAME"], &
1459 : description="Specifies the filename that contains the NEQUIP model.", &
1460 20972 : usage="POT_FILE_NAME {FILENAME}", default_lc_val=" ")
1461 10486 : CALL section_add_keyword(section, keyword)
1462 10486 : CALL keyword_release(keyword)
1463 :
1464 : CALL keyword_create(keyword, __LOCATION__, name="UNIT_LENGTH", &
1465 : description="Units of length in the NEQUIP model.pth file. "// &
1466 : "The units of positions, cell, energies and forces must be self-consistent: "// &
1467 : "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1468 10486 : usage="UNIT_LENGTH angstrom", default_c_val="angstrom")
1469 10486 : CALL section_add_keyword(section, keyword)
1470 10486 : CALL keyword_release(keyword)
1471 :
1472 : CALL keyword_create(keyword, __LOCATION__, name="UNIT_ENERGY", &
1473 : description="Units of energy in the NEQUIP model.pth file. "// &
1474 : "The units of positions, energies and forces must be self-consistent: "// &
1475 : "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1476 10486 : usage="UNIT_ENERGY hartree", default_c_val="eV")
1477 10486 : CALL section_add_keyword(section, keyword)
1478 10486 : CALL keyword_release(keyword)
1479 :
1480 : CALL keyword_create(keyword, __LOCATION__, name="UNIT_FORCES", &
1481 : description="Units of the forces in the NEQUIP model.pth file. "// &
1482 : "The units of positions, energies and forces must be self-consistent: "// &
1483 : "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1484 10486 : usage="UNIT_FORCES hartree/bohr", default_c_val="eV/Angstrom")
1485 10486 : CALL section_add_keyword(section, keyword)
1486 10486 : CALL keyword_release(keyword)
1487 :
1488 10486 : END SUBROUTINE create_NEQUIP_section
1489 :
1490 : ! **************************************************************************************************
1491 : !> \brief This section specifies the input parameters for MACE potential type
1492 : !> \param section the section to create
1493 : !> \author Xinyue Sun
1494 : ! **************************************************************************************************
1495 10486 : SUBROUTINE create_MACE_section(section)
1496 : TYPE(section_type), POINTER :: section
1497 :
1498 : TYPE(keyword_type), POINTER :: keyword
1499 :
1500 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1501 : CALL section_create(section, __LOCATION__, name="MACE", &
1502 : description="This section specifies the input parameters for MACE potential type, "// &
1503 : "a higher-order equivariant message-passing neural network. "// &
1504 : "The MACE model must be exported to a TorchScript file that takes a single "// &
1505 : "dictionary argument (see the create_cp2k_model.py helper). "// &
1506 : "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1507 20972 : citations=[Batatia2022], n_keywords=1, n_subsections=0, repeats=.FALSE.)
1508 :
1509 10486 : NULLIFY (keyword)
1510 :
1511 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1512 : description="Defines the atomic kinds involved in the MACE potential. "// &
1513 : "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1514 : "to MACE atom types is correct. This mapping should also be consistent for the "// &
1515 : "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1516 : usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1517 10486 : n_var=-1)
1518 10486 : CALL section_add_keyword(section, keyword)
1519 10486 : CALL keyword_release(keyword)
1520 :
1521 : CALL keyword_create(keyword, __LOCATION__, name="POT_FILE_NAME", &
1522 : variants=["MODEL_FILE_NAME"], &
1523 : description="Specifies the filename that contains the exported MACE model. "// &
1524 : "MACE models use standardized units (Angstrom for length, eV for energy, "// &
1525 : "eV/Angstrom for forces), so no unit keywords are required.", &
1526 20972 : usage="POT_FILE_NAME {FILENAME}", default_lc_val=" ")
1527 10486 : CALL section_add_keyword(section, keyword)
1528 10486 : CALL keyword_release(keyword)
1529 :
1530 10486 : END SUBROUTINE create_MACE_section
1531 :
1532 : ! **************************************************************************************************
1533 : !> \brief This section specifies the input parameters for ACE potential type
1534 : !> \param section the section to create
1535 : !> \author
1536 : ! **************************************************************************************************
1537 10486 : SUBROUTINE create_ACE_section(section)
1538 : TYPE(section_type), POINTER :: section
1539 :
1540 : TYPE(keyword_type), POINTER :: keyword
1541 :
1542 : CALL section_create(section, __LOCATION__, name="ACE", &
1543 : description="This section specifies the input parameters for Atomic Cluster Expansion type. "// &
1544 : "Mainly intended for accurate representation of "// &
1545 : "potential energy surfaces. "// &
1546 : "Requires linking with ACE library from "// &
1547 : "<a href=""https://github.com/ICAMS/lammps-user-pace"" "// &
1548 : "target=""_blank"">https://github.com/ICAMS/lammps-user-pace</a> .", &
1549 : citations=[Drautz2019, Lysogorskiy2021, Bochkarev2024], &
1550 41944 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
1551 10486 : NULLIFY (keyword)
1552 :
1553 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1554 : description="Defines the atomic species. "// &
1555 : "Provide a list of each element, "// &
1556 : "making sure that the mapping from the ATOMS list to ACE atom types is correct.", &
1557 : usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1558 10486 : n_var=-1)
1559 10486 : CALL section_add_keyword(section, keyword)
1560 10486 : CALL keyword_release(keyword)
1561 : CALL keyword_create(keyword, __LOCATION__, name="POT_FILE_NAME", &
1562 : variants=["PARMFILE"], &
1563 : description="Specifies the filename that contains the ACE potential parameters.", &
1564 20972 : usage="POT_FILE_NAME {FILENAME}", default_lc_val="test.yaml")
1565 10486 : CALL section_add_keyword(section, keyword)
1566 10486 : CALL keyword_release(keyword)
1567 10486 : END SUBROUTINE create_ACE_section
1568 :
1569 : ! **************************************************************************************************
1570 : !> \brief This section specifies the input parameters for DEEPMD potential type
1571 : !> \param section the section to create
1572 : !> \author ybzhuang
1573 : ! **************************************************************************************************
1574 10486 : SUBROUTINE create_DEEPMD_section(section)
1575 : TYPE(section_type), POINTER :: section
1576 :
1577 : TYPE(keyword_type), POINTER :: keyword
1578 :
1579 : CALL section_create(section, __LOCATION__, name="DEEPMD", &
1580 : description="This section specifies the input parameters for Deep Potential type. "// &
1581 : "Mainly intended for things like neural network to DFT "// &
1582 : "to achieve correlated-wavefunction-like accuracy. "// &
1583 : "Requires linking with DeePMD-kit library from "// &
1584 : "<a href=""https://docs.deepmodeling.com/projects/deepmd/en/master"" "// &
1585 : "target=""_blank"">https://docs.deepmodeling.com/projects/deepmd/en/master</a> .", &
1586 31458 : citations=[Wang2018, Zeng2023], n_keywords=1, n_subsections=0, repeats=.FALSE.)
1587 10486 : NULLIFY (keyword)
1588 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1589 : description="Defines the atomic kinds involved in the Deep Potential. "// &
1590 : "Provide a list of each element, "// &
1591 : "making sure that the mapping from the ATOMS list to DeePMD atom types is correct.", &
1592 : usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1593 10486 : n_var=-1)
1594 10486 : CALL section_add_keyword(section, keyword)
1595 10486 : CALL keyword_release(keyword)
1596 : CALL keyword_create(keyword, __LOCATION__, name="POT_FILE_NAME", &
1597 : variants=["PARMFILE"], &
1598 : description="Specifies the filename that contains the DeePMD-kit potential.", &
1599 20972 : usage="POT_FILE_NAME {FILENAME}", default_lc_val="graph.pb")
1600 10486 : CALL section_add_keyword(section, keyword)
1601 10486 : CALL keyword_release(keyword)
1602 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS_DEEPMD_TYPE", &
1603 : description="Specifies the atomic TYPE for the DeePMD-kit potential. "// &
1604 : "Provide a list of index, making sure that the mapping "// &
1605 : "from the ATOMS list to DeePMD atom types is correct. ", &
1606 : usage="ATOMS_DEEPMD_TYPE {TYPE INTEGER 1} {TYPE INTEGER 2} .. "// &
1607 : "{TYPE INTEGER N}", type_of_var=integer_t, &
1608 10486 : n_var=-1)
1609 10486 : CALL section_add_keyword(section, keyword)
1610 10486 : CALL keyword_release(keyword)
1611 10486 : END SUBROUTINE create_DEEPMD_section
1612 :
1613 : ! **************************************************************************************************
1614 : !> \brief This section specifies the input parameters for Lennard-Jones potential type
1615 : !> \param section the section to create
1616 : !> \author teo
1617 : ! **************************************************************************************************
1618 41944 : SUBROUTINE create_LJ_section(section)
1619 : TYPE(section_type), POINTER :: section
1620 :
1621 : TYPE(keyword_type), POINTER :: keyword
1622 :
1623 41944 : CPASSERT(.NOT. ASSOCIATED(section))
1624 : CALL section_create(section, __LOCATION__, name="lennard-jones", &
1625 : description="This section specifies the input parameters for LENNARD-JONES potential type. "// &
1626 : "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", &
1627 41944 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1628 :
1629 41944 : NULLIFY (keyword)
1630 :
1631 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1632 : description="Defines the atomic kind involved in the nonbond potential", &
1633 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1634 41944 : n_var=2)
1635 41944 : CALL section_add_keyword(section, keyword)
1636 41944 : CALL keyword_release(keyword)
1637 :
1638 : CALL keyword_create(keyword, __LOCATION__, name="EPSILON", &
1639 : description="Defines the EPSILON parameter of the LJ potential", &
1640 : usage="EPSILON {real}", type_of_var=real_t, &
1641 41944 : n_var=1, unit_str="K_e")
1642 41944 : CALL section_add_keyword(section, keyword)
1643 41944 : CALL keyword_release(keyword)
1644 :
1645 : CALL keyword_create(keyword, __LOCATION__, name="SIGMA", &
1646 : description="Defines the SIGMA parameter of the LJ potential", &
1647 : usage="SIGMA {real}", type_of_var=real_t, &
1648 41944 : n_var=1, unit_str="angstrom")
1649 41944 : CALL section_add_keyword(section, keyword)
1650 41944 : CALL keyword_release(keyword)
1651 :
1652 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1653 : description="Defines the cutoff parameter of the LJ potential", &
1654 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1655 : unit_str="angstrom"), &
1656 41944 : unit_str="angstrom")
1657 41944 : CALL section_add_keyword(section, keyword)
1658 41944 : CALL keyword_release(keyword)
1659 :
1660 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1661 : description="Defines the lower bound of the potential. If not set the range is the"// &
1662 : " full range generate by the spline", usage="RMIN {real}", &
1663 41944 : type_of_var=real_t, unit_str="angstrom")
1664 41944 : CALL section_add_keyword(section, keyword)
1665 41944 : CALL keyword_release(keyword)
1666 :
1667 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1668 : description="Defines the upper bound of the potential. If not set the range is the"// &
1669 : " full range generate by the spline", usage="RMAX {real}", &
1670 41944 : type_of_var=real_t, unit_str="angstrom")
1671 41944 : CALL section_add_keyword(section, keyword)
1672 41944 : CALL keyword_release(keyword)
1673 :
1674 41944 : END SUBROUTINE create_LJ_section
1675 :
1676 : ! **************************************************************************************************
1677 : !> \brief This section specifies the input parameters for Williams potential type
1678 : !> \param section the section to create
1679 : !> \author teo
1680 : ! **************************************************************************************************
1681 41944 : SUBROUTINE create_Williams_section(section)
1682 : TYPE(section_type), POINTER :: section
1683 :
1684 : TYPE(keyword_type), POINTER :: keyword
1685 :
1686 41944 : CPASSERT(.NOT. ASSOCIATED(section))
1687 : CALL section_create(section, __LOCATION__, name="williams", &
1688 : description="This section specifies the input parameters for WILLIAMS potential type. "// &
1689 : "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", &
1690 41944 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1691 :
1692 41944 : NULLIFY (keyword)
1693 :
1694 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1695 : description="Defines the atomic kind involved in the nonbond potential", &
1696 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1697 41944 : n_var=2)
1698 41944 : CALL section_add_keyword(section, keyword)
1699 41944 : CALL keyword_release(keyword)
1700 :
1701 : CALL keyword_create(keyword, __LOCATION__, name="A", &
1702 : description="Defines the A parameter of the Williams potential", &
1703 : usage="A {real}", type_of_var=real_t, &
1704 41944 : n_var=1, unit_str="K_e")
1705 41944 : CALL section_add_keyword(section, keyword)
1706 41944 : CALL keyword_release(keyword)
1707 :
1708 : CALL keyword_create(keyword, __LOCATION__, name="B", &
1709 : description="Defines the B parameter of the Williams potential", &
1710 : usage="B {real}", type_of_var=real_t, &
1711 41944 : n_var=1, unit_str="angstrom^-1")
1712 41944 : CALL section_add_keyword(section, keyword)
1713 41944 : CALL keyword_release(keyword)
1714 :
1715 : CALL keyword_create(keyword, __LOCATION__, name="C", &
1716 : description="Defines the C parameter of the Williams potential", &
1717 : usage="C {real}", type_of_var=real_t, &
1718 41944 : n_var=1, unit_str="K_e*angstrom^6")
1719 41944 : CALL section_add_keyword(section, keyword)
1720 41944 : CALL keyword_release(keyword)
1721 :
1722 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1723 : description="Defines the cutoff parameter of the Williams potential", &
1724 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1725 : unit_str="angstrom"), &
1726 41944 : unit_str="angstrom")
1727 41944 : CALL section_add_keyword(section, keyword)
1728 41944 : CALL keyword_release(keyword)
1729 :
1730 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1731 : description="Defines the lower bound of the potential. If not set the range is the"// &
1732 : " full range generate by the spline", usage="RMIN {real}", &
1733 41944 : type_of_var=real_t, unit_str="angstrom")
1734 41944 : CALL section_add_keyword(section, keyword)
1735 41944 : CALL keyword_release(keyword)
1736 :
1737 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1738 : description="Defines the upper bound of the potential. If not set the range is the"// &
1739 : " full range generate by the spline", usage="RMAX {real}", &
1740 41944 : type_of_var=real_t, unit_str="angstrom")
1741 41944 : CALL section_add_keyword(section, keyword)
1742 41944 : CALL keyword_release(keyword)
1743 :
1744 41944 : END SUBROUTINE create_Williams_section
1745 :
1746 : ! **************************************************************************************************
1747 : !> \brief This section specifies the input parameters for Goodwin potential type
1748 : !> \param section the section to create
1749 : !> \author teo
1750 : ! **************************************************************************************************
1751 41944 : SUBROUTINE create_Goodwin_section(section)
1752 : TYPE(section_type), POINTER :: section
1753 :
1754 : TYPE(keyword_type), POINTER :: keyword
1755 :
1756 41944 : CPASSERT(.NOT. ASSOCIATED(section))
1757 : CALL section_create(section, __LOCATION__, name="goodwin", &
1758 : description="This section specifies the input parameters for GOODWIN potential type. "// &
1759 : "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", &
1760 41944 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1761 :
1762 41944 : NULLIFY (keyword)
1763 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1764 : description="Defines the atomic kind involved in the nonbond potential", &
1765 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1766 41944 : n_var=2)
1767 41944 : CALL section_add_keyword(section, keyword)
1768 41944 : CALL keyword_release(keyword)
1769 :
1770 : CALL keyword_create(keyword, __LOCATION__, name="VR0", &
1771 : description="Defines the VR0 parameter of the Goodwin potential", &
1772 : usage="VR0 {real}", type_of_var=real_t, &
1773 41944 : n_var=1, unit_str="K_e")
1774 41944 : CALL section_add_keyword(section, keyword)
1775 41944 : CALL keyword_release(keyword)
1776 :
1777 : CALL keyword_create(keyword, __LOCATION__, name="D", &
1778 : description="Defines the D parameter of the Goodwin potential", &
1779 : usage="D {real}", type_of_var=real_t, &
1780 41944 : n_var=1, unit_str="angstrom")
1781 41944 : CALL section_add_keyword(section, keyword)
1782 41944 : CALL keyword_release(keyword)
1783 :
1784 : CALL keyword_create(keyword, __LOCATION__, name="DC", &
1785 : description="Defines the DC parameter of the Goodwin potential", &
1786 : usage="DC {real}", type_of_var=real_t, &
1787 41944 : n_var=1, unit_str="angstrom")
1788 41944 : CALL section_add_keyword(section, keyword)
1789 41944 : CALL keyword_release(keyword)
1790 :
1791 : CALL keyword_create(keyword, __LOCATION__, name="M", &
1792 : description="Defines the M parameter of the Goodwin potential", &
1793 : usage="M {real}", type_of_var=integer_t, &
1794 41944 : n_var=1)
1795 41944 : CALL section_add_keyword(section, keyword)
1796 41944 : CALL keyword_release(keyword)
1797 :
1798 : CALL keyword_create(keyword, __LOCATION__, name="MC", &
1799 : description="Defines the MC parameter of the Goodwin potential", &
1800 : usage="MC {real}", type_of_var=integer_t, &
1801 41944 : n_var=1)
1802 41944 : CALL section_add_keyword(section, keyword)
1803 41944 : CALL keyword_release(keyword)
1804 :
1805 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1806 : description="Defines the cutoff parameter of the Goodwin potential", &
1807 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1808 : unit_str="angstrom"), &
1809 41944 : unit_str="angstrom")
1810 41944 : CALL section_add_keyword(section, keyword)
1811 41944 : CALL keyword_release(keyword)
1812 :
1813 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1814 : description="Defines the lower bound of the potential. If not set the range is the"// &
1815 : " full range generate by the spline", usage="RMIN {real}", &
1816 41944 : type_of_var=real_t, unit_str="angstrom")
1817 41944 : CALL section_add_keyword(section, keyword)
1818 41944 : CALL keyword_release(keyword)
1819 :
1820 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1821 : description="Defines the upper bound of the potential. If not set the range is the"// &
1822 : " full range generate by the spline", usage="RMAX {real}", &
1823 41944 : type_of_var=real_t, unit_str="angstrom")
1824 41944 : CALL section_add_keyword(section, keyword)
1825 41944 : CALL keyword_release(keyword)
1826 :
1827 41944 : END SUBROUTINE create_Goodwin_section
1828 :
1829 : ! **************************************************************************************************
1830 : !> \brief This section specifies the input parameters for IPBV potential type
1831 : !> \param section the section to create
1832 : !> \author teo
1833 : ! **************************************************************************************************
1834 10486 : SUBROUTINE create_ipbv_section(section)
1835 : TYPE(section_type), POINTER :: section
1836 :
1837 : TYPE(keyword_type), POINTER :: keyword
1838 :
1839 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1840 : CALL section_create(section, __LOCATION__, name="ipbv", &
1841 : description="This section specifies the input parameters for IPBV potential type. "// &
1842 : "Functional form: Implicit table function.", &
1843 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
1844 :
1845 10486 : NULLIFY (keyword)
1846 :
1847 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1848 : description="Defines the atomic kind involved in the IPBV nonbond potential", &
1849 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1850 10486 : n_var=2)
1851 10486 : CALL section_add_keyword(section, keyword)
1852 10486 : CALL keyword_release(keyword)
1853 :
1854 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1855 : description="Defines the cutoff parameter of the IPBV potential", &
1856 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1857 : unit_str="angstrom"), &
1858 10486 : unit_str="angstrom")
1859 10486 : CALL section_add_keyword(section, keyword)
1860 10486 : CALL keyword_release(keyword)
1861 :
1862 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1863 : description="Defines the lower bound of the potential. If not set the range is the"// &
1864 : " full range generate by the spline", usage="RMIN {real}", &
1865 10486 : type_of_var=real_t, unit_str="angstrom")
1866 10486 : CALL section_add_keyword(section, keyword)
1867 10486 : CALL keyword_release(keyword)
1868 :
1869 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1870 : description="Defines the upper bound of the potential. If not set the range is the"// &
1871 : " full range generate by the spline", usage="RMAX {real}", &
1872 10486 : type_of_var=real_t, unit_str="angstrom")
1873 10486 : CALL section_add_keyword(section, keyword)
1874 10486 : CALL keyword_release(keyword)
1875 :
1876 10486 : END SUBROUTINE create_ipbv_section
1877 :
1878 : ! **************************************************************************************************
1879 : !> \brief This section specifies the input parameters for BMHFT potential type
1880 : !> \param section the section to create
1881 : !> \author teo
1882 : ! **************************************************************************************************
1883 10486 : SUBROUTINE create_BMHFT_section(section)
1884 : TYPE(section_type), POINTER :: section
1885 :
1886 : TYPE(keyword_type), POINTER :: keyword
1887 :
1888 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1889 : CALL section_create(section, __LOCATION__, name="BMHFT", &
1890 : description="This section specifies the input parameters for BMHFT potential type. "// &
1891 : "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8. "// &
1892 : "Values available inside cp2k only for the Na/Cl pair.", &
1893 31458 : citations=[Tosi1964a, Tosi1964b], n_keywords=1, n_subsections=0, repeats=.TRUE.)
1894 :
1895 10486 : NULLIFY (keyword)
1896 :
1897 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1898 : description="Defines the atomic kind involved in the BMHFT nonbond potential", &
1899 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1900 10486 : n_var=2)
1901 10486 : CALL section_add_keyword(section, keyword)
1902 10486 : CALL keyword_release(keyword)
1903 :
1904 : CALL keyword_create(keyword, __LOCATION__, name="MAP_ATOMS", &
1905 : description="Defines the kinds for which internally is defined the BMHFT nonbond potential"// &
1906 : " at the moment only Na and Cl.", &
1907 : usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1908 10486 : n_var=2)
1909 10486 : CALL section_add_keyword(section, keyword)
1910 10486 : CALL keyword_release(keyword)
1911 :
1912 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
1913 : description="Defines the cutoff parameter of the BMHFT potential", &
1914 : usage="RCUT {real}", default_r_val=7.8_dp, &
1915 10486 : unit_str="angstrom")
1916 10486 : CALL section_add_keyword(section, keyword)
1917 10486 : CALL keyword_release(keyword)
1918 :
1919 : CALL keyword_create(keyword, __LOCATION__, name="A", &
1920 : description="Defines the A parameter of the Fumi-Tosi Potential", &
1921 : usage="A {real}", type_of_var=real_t, &
1922 10486 : n_var=1, unit_str="hartree")
1923 10486 : CALL section_add_keyword(section, keyword)
1924 10486 : CALL keyword_release(keyword)
1925 :
1926 : CALL keyword_create(keyword, __LOCATION__, name="B", &
1927 : description="Defines the B parameter of the Fumi-Tosi Potential", &
1928 : usage="B {real}", type_of_var=real_t, &
1929 10486 : n_var=1, unit_str="angstrom^-1")
1930 10486 : CALL section_add_keyword(section, keyword)
1931 10486 : CALL keyword_release(keyword)
1932 :
1933 : CALL keyword_create(keyword, __LOCATION__, name="C", &
1934 : description="Defines the C parameter of the Fumi-Tosi Potential", &
1935 : usage="C {real}", type_of_var=real_t, &
1936 10486 : n_var=1, unit_str="hartree*angstrom^6")
1937 10486 : CALL section_add_keyword(section, keyword)
1938 10486 : CALL keyword_release(keyword)
1939 :
1940 : CALL keyword_create(keyword, __LOCATION__, name="D", &
1941 : description="Defines the D parameter of the Fumi-Tosi Potential", &
1942 : usage="D {real}", type_of_var=real_t, &
1943 10486 : n_var=1, unit_str="hartree*angstrom^8")
1944 10486 : CALL section_add_keyword(section, keyword)
1945 10486 : CALL keyword_release(keyword)
1946 :
1947 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
1948 : description="Defines the lower bound of the potential. If not set the range is the"// &
1949 : " full range generate by the spline", usage="RMIN {real}", &
1950 10486 : type_of_var=real_t, unit_str="angstrom")
1951 10486 : CALL section_add_keyword(section, keyword)
1952 10486 : CALL keyword_release(keyword)
1953 :
1954 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
1955 : description="Defines the upper bound of the potential. If not set the range is the"// &
1956 : " full range generate by the spline", usage="RMAX {real}", &
1957 10486 : type_of_var=real_t, unit_str="angstrom")
1958 10486 : CALL section_add_keyword(section, keyword)
1959 10486 : CALL keyword_release(keyword)
1960 :
1961 10486 : END SUBROUTINE create_BMHFT_section
1962 :
1963 : ! **************************************************************************************************
1964 : !> \brief This section specifies the input parameters for BMHFTD potential type
1965 : !> \param section the section to create
1966 : !> \par History
1967 : !> - Unused input keyword ORDER removed (18.10.2021, MK)
1968 : !> \author Mathieu Salanne 05.2010
1969 : ! **************************************************************************************************
1970 10486 : SUBROUTINE create_BMHFTD_section(section)
1971 : TYPE(section_type), POINTER :: section
1972 :
1973 : TYPE(keyword_type), POINTER :: keyword
1974 :
1975 10486 : CPASSERT(.NOT. ASSOCIATED(section))
1976 : CALL section_create(section, __LOCATION__, name="BMHFTD", &
1977 : description="This section specifies the input parameters for the BMHFTD potential type. "// &
1978 : "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8 "// &
1979 : "where f_order(r) = 1 - exp(-BD*r)*\sum_{k=0}^order (BD*r)^k/k! "// &
1980 : "(Tang-Toennies damping function). No pre-defined parameter values are available.", &
1981 31458 : citations=[Tosi1964a, Tosi1964b], n_keywords=1, n_subsections=0, repeats=.TRUE.)
1982 :
1983 10486 : NULLIFY (keyword)
1984 :
1985 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
1986 : description="Defines the atomic kind involved in the BMHFTD nonbond potential", &
1987 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1988 10486 : n_var=2)
1989 10486 : CALL section_add_keyword(section, keyword)
1990 10486 : CALL keyword_release(keyword)
1991 :
1992 : CALL keyword_create(keyword, __LOCATION__, name="MAP_ATOMS", &
1993 : description="Defines the kinds for which internally is defined the BMHFTD nonbond potential"// &
1994 : " at the moment no species included.", &
1995 : usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1996 10486 : n_var=2)
1997 10486 : CALL section_add_keyword(section, keyword)
1998 10486 : CALL keyword_release(keyword)
1999 :
2000 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2001 : description="Defines the cutoff parameter of the BMHFTD potential", &
2002 : usage="RCUT {real}", default_r_val=7.8_dp, &
2003 10486 : unit_str="angstrom")
2004 10486 : CALL section_add_keyword(section, keyword)
2005 10486 : CALL keyword_release(keyword)
2006 :
2007 : CALL keyword_create(keyword, __LOCATION__, name="A", &
2008 : description="Defines the A parameter of the dispersion-damped Fumi-Tosi potential", &
2009 : usage="A {real}", type_of_var=real_t, &
2010 10486 : n_var=1, unit_str="hartree")
2011 10486 : CALL section_add_keyword(section, keyword)
2012 10486 : CALL keyword_release(keyword)
2013 :
2014 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2015 : description="Defines the B parameter of the dispersion-damped Fumi-Tosi potential", &
2016 : usage="B {real}", type_of_var=real_t, &
2017 10486 : n_var=1, unit_str="angstrom^-1")
2018 10486 : CALL section_add_keyword(section, keyword)
2019 10486 : CALL keyword_release(keyword)
2020 :
2021 : CALL keyword_create(keyword, __LOCATION__, name="C", &
2022 : description="Defines the C parameter of the dispersion-damped Fumi-Tosi potential", &
2023 : usage="C {real}", type_of_var=real_t, &
2024 10486 : n_var=1, unit_str="hartree*angstrom^6")
2025 10486 : CALL section_add_keyword(section, keyword)
2026 10486 : CALL keyword_release(keyword)
2027 :
2028 : CALL keyword_create(keyword, __LOCATION__, name="D", &
2029 : description="Defines the D parameter of the dispersion-damped Fumi-Tosi potential", &
2030 : usage="D {real}", type_of_var=real_t, &
2031 10486 : n_var=1, unit_str="hartree*angstrom^8")
2032 10486 : CALL section_add_keyword(section, keyword)
2033 10486 : CALL keyword_release(keyword)
2034 :
2035 : CALL keyword_create(keyword, __LOCATION__, name="BD", &
2036 : description="Defines the BD parameters of the dispersion-damped Fumi-Tosi potential. "// &
2037 : "One or two parameter values are expected. If only one value is provided, then this "// &
2038 : "value will be used both for the 6th and the 8th order term.", &
2039 : usage="BD {real} {real}", type_of_var=real_t, &
2040 10486 : n_var=-1, unit_str="angstrom^-1")
2041 10486 : CALL section_add_keyword(section, keyword)
2042 10486 : CALL keyword_release(keyword)
2043 :
2044 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
2045 : description="Defines the lower bound of the potential. If not set the range is the"// &
2046 : " full range generate by the spline", usage="RMIN {real}", &
2047 10486 : type_of_var=real_t, unit_str="angstrom")
2048 10486 : CALL section_add_keyword(section, keyword)
2049 10486 : CALL keyword_release(keyword)
2050 :
2051 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
2052 : description="Defines the upper bound of the potential. If not set the range is the"// &
2053 : " full range generate by the spline", usage="RMAX {real}", &
2054 10486 : type_of_var=real_t, unit_str="angstrom")
2055 10486 : CALL section_add_keyword(section, keyword)
2056 10486 : CALL keyword_release(keyword)
2057 :
2058 10486 : END SUBROUTINE create_BMHFTD_section
2059 :
2060 : ! **************************************************************************************************
2061 : !> \brief This section specifies the input parameters for Buckingham 4 ranges potential type
2062 : !> \param section the section to create
2063 : !> \author MI
2064 : ! **************************************************************************************************
2065 10486 : SUBROUTINE create_Buck4r_section(section)
2066 : TYPE(section_type), POINTER :: section
2067 :
2068 : TYPE(keyword_type), POINTER :: keyword
2069 :
2070 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2071 : CALL section_create(section, __LOCATION__, name="BUCK4RANGES", &
2072 : description="This section specifies the input parameters for the Buckingham 4-ranges"// &
2073 : " potential type."//newline// &
2074 : "| Range | Functional Form |"//newline// &
2075 : "| ----- | --------------- |"//newline// &
2076 : "| $ r < r_1 $ | $ V(r) = A\exp(-Br) $ |"//newline// &
2077 : "| $ r_1 \leq r < r_2 $ | $ V(r) = \sum_n \operatorname{POLY1}(n)r_n $ |"//newline// &
2078 : "| $ r_2 \leq r < r_3 $ | $ V(r) = \sum_n \operatorname{POLY2}(n)r_n $ |"//newline// &
2079 : "| $ r \geq r_3 $ | $ V(r) = -C/r_6 $ |"//newline, &
2080 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
2081 :
2082 10486 : NULLIFY (keyword)
2083 :
2084 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2085 : description="Defines the atomic kind involved in the nonbond potential", &
2086 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2087 10486 : n_var=2)
2088 10486 : CALL section_add_keyword(section, keyword)
2089 10486 : CALL keyword_release(keyword)
2090 :
2091 : CALL keyword_create(keyword, __LOCATION__, name="A", &
2092 : description="Defines the A parameter of the Buckingham potential", &
2093 : usage="A {real}", type_of_var=real_t, &
2094 10486 : n_var=1, unit_str="K_e")
2095 10486 : CALL section_add_keyword(section, keyword)
2096 10486 : CALL keyword_release(keyword)
2097 :
2098 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2099 : description="Defines the B parameter of the Buckingham potential", &
2100 : usage="B {real}", type_of_var=real_t, &
2101 10486 : n_var=1, unit_str="angstrom^-1")
2102 10486 : CALL section_add_keyword(section, keyword)
2103 10486 : CALL keyword_release(keyword)
2104 :
2105 : CALL keyword_create(keyword, __LOCATION__, name="C", &
2106 : description="Defines the C parameter of the Buckingham potential", &
2107 : usage="C {real}", type_of_var=real_t, &
2108 10486 : n_var=1, unit_str="K_e*angstrom^6")
2109 10486 : CALL section_add_keyword(section, keyword)
2110 10486 : CALL keyword_release(keyword)
2111 :
2112 : CALL keyword_create(keyword, __LOCATION__, name="R1", &
2113 : description="Defines the upper bound of the first range ", &
2114 : usage="R1 {real}", type_of_var=real_t, &
2115 10486 : n_var=1, unit_str="angstrom")
2116 10486 : CALL section_add_keyword(section, keyword)
2117 10486 : CALL keyword_release(keyword)
2118 :
2119 : CALL keyword_create(keyword, __LOCATION__, name="R2", &
2120 : description="Defines the upper bound of the second range ", &
2121 : usage="R2 {real}", type_of_var=real_t, &
2122 10486 : n_var=1, unit_str="angstrom")
2123 10486 : CALL section_add_keyword(section, keyword)
2124 10486 : CALL keyword_release(keyword)
2125 :
2126 : CALL keyword_create(keyword, __LOCATION__, name="R3", &
2127 : description="Defines the upper bound of the third range ", &
2128 : usage="R3 {real}", type_of_var=real_t, &
2129 10486 : n_var=1, unit_str="angstrom")
2130 10486 : CALL section_add_keyword(section, keyword)
2131 10486 : CALL keyword_release(keyword)
2132 :
2133 : CALL keyword_create(keyword, __LOCATION__, name="POLY1", &
2134 : description="Coefficients of the polynomial used in the second range "// &
2135 : "This keyword can be repeated several times.", &
2136 : usage="POLY1 C1 C2 C3 ..", &
2137 10486 : n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.TRUE.)
2138 10486 : CALL section_add_keyword(section, keyword)
2139 10486 : CALL keyword_release(keyword)
2140 :
2141 : CALL keyword_create(keyword, __LOCATION__, name="POLY2", &
2142 : description="Coefficients of the polynomial used in the third range "// &
2143 : "This keyword can be repeated several times.", &
2144 : usage="POLY2 C1 C2 C3 ..", &
2145 10486 : n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.TRUE.)
2146 10486 : CALL section_add_keyword(section, keyword)
2147 10486 : CALL keyword_release(keyword)
2148 :
2149 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2150 : description="Defines the cutoff parameter of the Buckingham potential", &
2151 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2152 : unit_str="angstrom"), &
2153 10486 : unit_str="angstrom")
2154 10486 : CALL section_add_keyword(section, keyword)
2155 10486 : CALL keyword_release(keyword)
2156 :
2157 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
2158 : description="Defines the lower bound of the potential. If not set the range is the"// &
2159 : " full range generate by the spline", usage="RMIN {real}", &
2160 10486 : type_of_var=real_t, unit_str="angstrom")
2161 10486 : CALL section_add_keyword(section, keyword)
2162 10486 : CALL keyword_release(keyword)
2163 :
2164 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
2165 : description="Defines the upper bound of the potential. If not set the range is the"// &
2166 : " full range generate by the spline", usage="RMAX {real}", &
2167 10486 : type_of_var=real_t, unit_str="angstrom")
2168 10486 : CALL section_add_keyword(section, keyword)
2169 10486 : CALL keyword_release(keyword)
2170 :
2171 10486 : END SUBROUTINE create_Buck4r_section
2172 :
2173 : ! **************************************************************************************************
2174 : !> \brief This section specifies the input parameters for Buckingham + Morse potential type
2175 : !> \param section the section to create
2176 : !> \author MI
2177 : ! **************************************************************************************************
2178 10486 : SUBROUTINE create_Buckmorse_section(section)
2179 : TYPE(section_type), POINTER :: section
2180 :
2181 : TYPE(keyword_type), POINTER :: keyword
2182 :
2183 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2184 : CALL section_create( &
2185 : section, __LOCATION__, name="BUCKMORSE", &
2186 : description="This section specifies the input parameters for"// &
2187 : " Buckingham plus Morse potential type"// &
2188 : " 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)]}.", &
2189 20972 : citations=[Yamada2000], n_keywords=1, n_subsections=0, repeats=.TRUE.)
2190 :
2191 10486 : NULLIFY (keyword)
2192 :
2193 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2194 : description="Defines the atomic kind involved in the nonbond potential", &
2195 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2196 10486 : n_var=2)
2197 10486 : CALL section_add_keyword(section, keyword)
2198 10486 : CALL keyword_release(keyword)
2199 :
2200 : CALL keyword_create(keyword, __LOCATION__, name="F0", &
2201 : description="Defines the f0 parameter of Buckingham+Morse potential", &
2202 : usage="F0 {real}", type_of_var=real_t, &
2203 10486 : n_var=1, unit_str="K_e*angstrom^-1")
2204 10486 : CALL section_add_keyword(section, keyword)
2205 10486 : CALL keyword_release(keyword)
2206 :
2207 : CALL keyword_create(keyword, __LOCATION__, name="A1", &
2208 : description="Defines the A1 parameter of Buckingham+Morse potential", &
2209 : usage="A1 {real}", type_of_var=real_t, &
2210 10486 : n_var=1, unit_str="angstrom")
2211 10486 : CALL section_add_keyword(section, keyword)
2212 10486 : CALL keyword_release(keyword)
2213 :
2214 : CALL keyword_create(keyword, __LOCATION__, name="A2", &
2215 : description="Defines the A2 parameter of Buckingham+Morse potential", &
2216 : usage="A2 {real}", type_of_var=real_t, &
2217 10486 : n_var=1, unit_str="angstrom")
2218 10486 : CALL section_add_keyword(section, keyword)
2219 10486 : CALL keyword_release(keyword)
2220 :
2221 : CALL keyword_create(keyword, __LOCATION__, name="B1", &
2222 : description="Defines the B1 parameter of Buckingham+Morse potential", &
2223 : usage="B1 {real}", type_of_var=real_t, &
2224 10486 : n_var=1, unit_str="angstrom")
2225 10486 : CALL section_add_keyword(section, keyword)
2226 10486 : CALL keyword_release(keyword)
2227 :
2228 : CALL keyword_create(keyword, __LOCATION__, name="B2", &
2229 : description="Defines the B2 parameter of Buckingham+Morse potential", &
2230 : usage="B2 {real}", type_of_var=real_t, &
2231 10486 : n_var=1, unit_str="angstrom")
2232 10486 : CALL section_add_keyword(section, keyword)
2233 10486 : CALL keyword_release(keyword)
2234 :
2235 : CALL keyword_create(keyword, __LOCATION__, name="C", &
2236 : description="Defines the C parameter of Buckingham+Morse potential", &
2237 : usage="C {real}", type_of_var=real_t, &
2238 10486 : n_var=1, unit_str="K_e*angstrom^6")
2239 10486 : CALL section_add_keyword(section, keyword)
2240 10486 : CALL keyword_release(keyword)
2241 :
2242 : CALL keyword_create(keyword, __LOCATION__, name="D", &
2243 : description="Defines the amplitude for the Morse part ", &
2244 : usage="D {real}", type_of_var=real_t, &
2245 10486 : n_var=1, unit_str="K_e")
2246 10486 : CALL section_add_keyword(section, keyword)
2247 10486 : CALL keyword_release(keyword)
2248 :
2249 : CALL keyword_create(keyword, __LOCATION__, name="R0", &
2250 : description="Defines the equilibrium distance for the Morse part ", &
2251 : usage="R0 {real}", type_of_var=real_t, &
2252 10486 : n_var=1, unit_str="angstrom")
2253 10486 : CALL section_add_keyword(section, keyword)
2254 10486 : CALL keyword_release(keyword)
2255 :
2256 : CALL keyword_create(keyword, __LOCATION__, name="Beta", &
2257 : description="Defines the width for the Morse part ", &
2258 : usage="Beta {real}", type_of_var=real_t, &
2259 10486 : n_var=1, unit_str="angstrom^-1")
2260 10486 : CALL section_add_keyword(section, keyword)
2261 10486 : CALL keyword_release(keyword)
2262 :
2263 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2264 : description="Defines the cutoff parameter of the Buckingham potential", &
2265 : usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2266 : unit_str="angstrom"), &
2267 10486 : unit_str="angstrom")
2268 10486 : CALL section_add_keyword(section, keyword)
2269 10486 : CALL keyword_release(keyword)
2270 :
2271 : CALL keyword_create(keyword, __LOCATION__, name="RMIN", &
2272 : description="Defines the lower bound of the potential. If not set the range is the"// &
2273 : " full range generate by the spline", usage="RMIN {real}", &
2274 10486 : type_of_var=real_t, unit_str="angstrom")
2275 10486 : CALL section_add_keyword(section, keyword)
2276 10486 : CALL keyword_release(keyword)
2277 :
2278 : CALL keyword_create(keyword, __LOCATION__, name="RMAX", &
2279 : description="Defines the upper bound of the potential. If not set the range is the"// &
2280 : " full range generate by the spline", usage="RMAX {real}", &
2281 10486 : type_of_var=real_t, unit_str="angstrom")
2282 10486 : CALL section_add_keyword(section, keyword)
2283 10486 : CALL keyword_release(keyword)
2284 :
2285 10486 : END SUBROUTINE create_Buckmorse_section
2286 :
2287 : ! **************************************************************************************************
2288 : !> \brief This section specifies the input parameters for Tersoff potential type
2289 : !> (Tersoff, J. PRB 39(8), 5566, 1989)
2290 : !> \param section ...
2291 : ! **************************************************************************************************
2292 10486 : SUBROUTINE create_Tersoff_section(section)
2293 : TYPE(section_type), POINTER :: section
2294 :
2295 : TYPE(keyword_type), POINTER :: keyword
2296 :
2297 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2298 : CALL section_create(section, __LOCATION__, name="TERSOFF", &
2299 : description="This section specifies the input parameters for Tersoff potential type.", &
2300 20972 : citations=[Tersoff1988], n_keywords=1, n_subsections=0, repeats=.TRUE.)
2301 :
2302 10486 : NULLIFY (keyword)
2303 :
2304 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2305 : description="Defines the atomic kind involved in the nonbond potential", &
2306 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2307 10486 : n_var=2)
2308 10486 : CALL section_add_keyword(section, keyword)
2309 10486 : CALL keyword_release(keyword)
2310 :
2311 : CALL keyword_create(keyword, __LOCATION__, name="A", &
2312 : description="Defines the A parameter of Tersoff potential", &
2313 : usage="A {real}", type_of_var=real_t, &
2314 : default_r_val=cp_unit_to_cp2k(value=1.8308E3_dp, &
2315 : unit_str="eV"), &
2316 10486 : n_var=1, unit_str="eV")
2317 10486 : CALL section_add_keyword(section, keyword)
2318 10486 : CALL keyword_release(keyword)
2319 :
2320 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2321 : description="Defines the B parameter of Tersoff potential", &
2322 : usage="B {real}", type_of_var=real_t, &
2323 : default_r_val=cp_unit_to_cp2k(value=4.7118E2_dp, &
2324 : unit_str="eV"), &
2325 10486 : n_var=1, unit_str="eV")
2326 10486 : CALL section_add_keyword(section, keyword)
2327 10486 : CALL keyword_release(keyword)
2328 :
2329 : CALL keyword_create(keyword, __LOCATION__, name="lambda1", &
2330 : description="Defines the lambda1 parameter of Tersoff potential", &
2331 : usage="lambda1 {real}", type_of_var=real_t, &
2332 : default_r_val=cp_unit_to_cp2k(value=2.4799_dp, &
2333 : unit_str="angstrom^-1"), &
2334 10486 : n_var=1, unit_str="angstrom^-1")
2335 10486 : CALL section_add_keyword(section, keyword)
2336 10486 : CALL keyword_release(keyword)
2337 :
2338 : CALL keyword_create(keyword, __LOCATION__, name="lambda2", &
2339 : description="Defines the lambda2 parameter of Tersoff potential", &
2340 : usage="lambda2 {real}", type_of_var=real_t, &
2341 : default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2342 : unit_str="angstrom^-1"), &
2343 10486 : n_var=1, unit_str="angstrom^-1")
2344 10486 : CALL section_add_keyword(section, keyword)
2345 10486 : CALL keyword_release(keyword)
2346 :
2347 : CALL keyword_create(keyword, __LOCATION__, name="alpha", &
2348 : description="Defines the alpha parameter of Tersoff potential", &
2349 : usage="alpha {real}", type_of_var=real_t, &
2350 : default_r_val=0.0_dp, &
2351 10486 : n_var=1)
2352 10486 : CALL section_add_keyword(section, keyword)
2353 10486 : CALL keyword_release(keyword)
2354 :
2355 : CALL keyword_create(keyword, __LOCATION__, name="beta", &
2356 : description="Defines the beta parameter of Tersoff potential", &
2357 : usage="beta {real}", type_of_var=real_t, &
2358 : default_r_val=1.0999E-6_dp, &
2359 10486 : n_var=1, unit_str="")
2360 10486 : CALL section_add_keyword(section, keyword)
2361 10486 : CALL keyword_release(keyword)
2362 :
2363 : CALL keyword_create(keyword, __LOCATION__, name="n", &
2364 : description="Defines the n parameter of Tersoff potential", &
2365 : usage="n {real}", type_of_var=real_t, &
2366 : default_r_val=7.8734E-1_dp, &
2367 10486 : n_var=1, unit_str="")
2368 10486 : CALL section_add_keyword(section, keyword)
2369 10486 : CALL keyword_release(keyword)
2370 :
2371 : CALL keyword_create(keyword, __LOCATION__, name="c", &
2372 : description="Defines the c parameter of Tersoff potential", &
2373 : usage="c {real}", type_of_var=real_t, &
2374 : default_r_val=1.0039E5_dp, &
2375 10486 : n_var=1, unit_str="")
2376 10486 : CALL section_add_keyword(section, keyword)
2377 10486 : CALL keyword_release(keyword)
2378 :
2379 : CALL keyword_create(keyword, __LOCATION__, name="d", &
2380 : description="Defines the d parameter of Tersoff potential", &
2381 : usage="d {real}", type_of_var=real_t, &
2382 : default_r_val=1.6218E1_dp, &
2383 10486 : n_var=1, unit_str="")
2384 10486 : CALL section_add_keyword(section, keyword)
2385 10486 : CALL keyword_release(keyword)
2386 :
2387 : CALL keyword_create(keyword, __LOCATION__, name="h", &
2388 : description="Defines the h parameter of Tersoff potential", &
2389 : usage="h {real}", type_of_var=real_t, &
2390 : default_r_val=-5.9826E-1_dp, &
2391 10486 : n_var=1, unit_str="")
2392 10486 : CALL section_add_keyword(section, keyword)
2393 10486 : CALL keyword_release(keyword)
2394 :
2395 : CALL keyword_create(keyword, __LOCATION__, name="lambda3", &
2396 : description="Defines the lambda3 parameter of Tersoff potential", &
2397 : usage="lambda3 {real}", type_of_var=real_t, &
2398 : default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2399 : unit_str="angstrom^-1"), &
2400 10486 : n_var=1, unit_str="angstrom^-1")
2401 10486 : CALL section_add_keyword(section, keyword)
2402 10486 : CALL keyword_release(keyword)
2403 :
2404 : CALL keyword_create(keyword, __LOCATION__, name="bigR", &
2405 : description="Defines the bigR parameter of Tersoff potential", &
2406 : usage="bigR {real}", type_of_var=real_t, &
2407 : default_r_val=cp_unit_to_cp2k(value=2.85_dp, &
2408 : unit_str="angstrom"), &
2409 10486 : n_var=1, unit_str="angstrom")
2410 10486 : CALL section_add_keyword(section, keyword)
2411 10486 : CALL keyword_release(keyword)
2412 :
2413 : CALL keyword_create(keyword, __LOCATION__, name="bigD", &
2414 : description="Defines the D parameter of Tersoff potential", &
2415 : usage="bigD {real}", type_of_var=real_t, &
2416 : default_r_val=cp_unit_to_cp2k(value=0.15_dp, &
2417 : unit_str="angstrom"), &
2418 10486 : n_var=1, unit_str="angstrom")
2419 10486 : CALL section_add_keyword(section, keyword)
2420 10486 : CALL keyword_release(keyword)
2421 :
2422 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2423 : description="Defines the cutoff parameter of the tersoff potential."// &
2424 : " This parameter is in principle already defined by the values of"// &
2425 : " bigD and bigR. But it is necessary to define it when using the tersoff"// &
2426 : " in conjunction with other potentials (for the same atomic pair) in order to have"// &
2427 : " the same consistent definition of RCUT for all potentials.", &
2428 : usage="RCUT {real}", type_of_var=real_t, &
2429 10486 : n_var=1, unit_str="angstrom")
2430 10486 : CALL section_add_keyword(section, keyword)
2431 10486 : CALL keyword_release(keyword)
2432 :
2433 10486 : END SUBROUTINE create_Tersoff_section
2434 :
2435 : ! **************************************************************************************************
2436 : !> \brief This section specifies the input parameters for Siepmann-Sprik
2437 : !> potential type
2438 : !> (Siepmann and Sprik, J. Chem. Phys. 102(1) 511, 1995)
2439 : !> \param section ...
2440 : ! **************************************************************************************************
2441 10486 : SUBROUTINE create_Siepmann_section(section)
2442 : TYPE(section_type), POINTER :: section
2443 :
2444 : TYPE(keyword_type), POINTER :: keyword
2445 :
2446 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2447 : CALL section_create(section, __LOCATION__, name="SIEPMANN", &
2448 : description="This section specifies the input parameters for the"// &
2449 : " Siepmann-Sprik potential type. Consists of 4 terms:"// &
2450 : " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// &
2451 : " have to be given via the GENPOT section. The terms T3+T4"// &
2452 : " are obtained from the SIEPMANN section. The Siepmann-Sprik"// &
2453 : " potential is designed for water-metal chemisorption.", &
2454 20972 : citations=[Siepmann1995], n_keywords=1, n_subsections=0, repeats=.TRUE.)
2455 :
2456 10486 : NULLIFY (keyword)
2457 :
2458 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2459 : description="Defines the atomic kind involved in the nonbond potential", &
2460 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2461 10486 : n_var=2)
2462 10486 : CALL section_add_keyword(section, keyword)
2463 10486 : CALL keyword_release(keyword)
2464 :
2465 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2466 : description="Defines the B parameter of Siepmann potential", &
2467 : usage="B {real}", type_of_var=real_t, &
2468 : default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2469 : unit_str="angstrom"), &
2470 10486 : n_var=1, unit_str="angstrom")
2471 10486 : CALL section_add_keyword(section, keyword)
2472 10486 : CALL keyword_release(keyword)
2473 :
2474 : CALL keyword_create(keyword, __LOCATION__, name="D", &
2475 : description="Defines the D parameter of Siepmann potential", &
2476 : usage="D {real}", type_of_var=real_t, &
2477 : default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2478 : unit_str="internal_cp2k"), &
2479 10486 : n_var=1, unit_str="internal_cp2k")
2480 10486 : CALL section_add_keyword(section, keyword)
2481 10486 : CALL keyword_release(keyword)
2482 :
2483 : CALL keyword_create(keyword, __LOCATION__, name="E", &
2484 : description="Defines the E parameter of Siepmann potential", &
2485 : usage="E {real}", type_of_var=real_t, &
2486 : default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2487 : unit_str="internal_cp2k"), &
2488 10486 : n_var=1, unit_str="internal_cp2k")
2489 10486 : CALL section_add_keyword(section, keyword)
2490 10486 : CALL keyword_release(keyword)
2491 :
2492 : CALL keyword_create(keyword, __LOCATION__, name="F", &
2493 : description="Defines the F parameter of Siepmann potential", &
2494 : usage="F {real}", type_of_var=real_t, &
2495 10486 : default_r_val=13.3_dp, n_var=1)
2496 10486 : CALL section_add_keyword(section, keyword)
2497 10486 : CALL keyword_release(keyword)
2498 : !
2499 : CALL keyword_create(keyword, __LOCATION__, name="beta", &
2500 : description="Defines the beta parameter of Siepmann potential", &
2501 : usage="beta {real}", type_of_var=real_t, &
2502 10486 : default_r_val=10.0_dp, n_var=1)
2503 10486 : CALL section_add_keyword(section, keyword)
2504 10486 : CALL keyword_release(keyword)
2505 : !
2506 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2507 : description="Defines the cutoff parameter of Siepmann potential", &
2508 : usage="RCUT {real}", type_of_var=real_t, &
2509 : default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2510 : unit_str="angstrom"), &
2511 10486 : n_var=1, unit_str="angstrom")
2512 10486 : CALL section_add_keyword(section, keyword)
2513 10486 : CALL keyword_release(keyword)
2514 : !
2515 : CALL keyword_create(keyword, __LOCATION__, name="ALLOW_OH_FORMATION", &
2516 : description=" The Siepmann-Sprik potential is actually designed for intact"// &
2517 : " water molecules only. If water is treated at the QM level,"// &
2518 : " water molecules can potentially dissociate, i.e."// &
2519 : " some O-H bonds might be stretched leading temporarily"// &
2520 : " to the formation of OH- ions. This keyword allows the"// &
2521 : " the formation of such ions. The T3 term (dipole term)"// &
2522 : " is then switched off for evaluating the interaction"// &
2523 : " between the OH- ion and the metal.", &
2524 : usage="ALLOW_OH_FORMATION TRUE", &
2525 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
2526 10486 : CALL section_add_keyword(section, keyword)
2527 10486 : CALL keyword_release(keyword)
2528 :
2529 : CALL keyword_create(keyword, __LOCATION__, name="ALLOW_H3O_FORMATION", &
2530 : description=" The Siepmann-Sprik potential is designed for intact water"// &
2531 : " molecules only. If water is treated at the QM level"// &
2532 : " and an acid is present, hydronium ions might occur."// &
2533 : " This keyword allows the formation of hydronium ions."// &
2534 : " The T3 term (dipole term) is switched off for evaluating"// &
2535 : " the interaction between hydronium and the metal.", &
2536 : usage="ALLOW_H3O_FORMATION TRUE", &
2537 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
2538 10486 : CALL section_add_keyword(section, keyword)
2539 10486 : CALL keyword_release(keyword)
2540 :
2541 : CALL keyword_create(keyword, __LOCATION__, name="ALLOW_O_FORMATION", &
2542 : description=" The Siepmann-Sprik potential is actually designed for intact"// &
2543 : " water molecules only. If water is treated at the QM level,"// &
2544 : " water molecules can potentially dissociate, i.e."// &
2545 : " some O-H bonds might be stretched leading temporarily"// &
2546 : " to the formation of O^2- ions. This keyword allows the"// &
2547 : " the formation of such ions. The T3 term (dipole term)"// &
2548 : " is then switched off for evaluating the interaction"// &
2549 : " between the O^2- ion and the metal.", &
2550 : usage="ALLOW_O_FORMATION .TRUE.", &
2551 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
2552 10486 : CALL section_add_keyword(section, keyword)
2553 10486 : CALL keyword_release(keyword)
2554 :
2555 10486 : END SUBROUTINE create_Siepmann_section
2556 :
2557 : ! **************************************************************************************************
2558 : !> \brief This section specifies the input parameters for GAL19
2559 : !> potential type
2560 : !> (??)
2561 : !> \param section ...
2562 : ! **************************************************************************************************
2563 10486 : SUBROUTINE create_Gal_section(section)
2564 : TYPE(section_type), POINTER :: section
2565 :
2566 : TYPE(keyword_type), POINTER :: keyword
2567 : TYPE(section_type), POINTER :: subsection
2568 :
2569 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2570 : CALL section_create(section, __LOCATION__, name="GAL19", &
2571 : description="Implementation of the GAL19 forcefield, see associated paper", &
2572 20972 : citations=[Clabaut2020], n_keywords=1, n_subsections=1, repeats=.TRUE.)
2573 :
2574 10486 : NULLIFY (keyword, subsection)
2575 :
2576 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2577 : description="Defines the atomic kind involved in the nonbond potential", &
2578 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2579 10486 : n_var=2)
2580 10486 : CALL section_add_keyword(section, keyword)
2581 10486 : CALL keyword_release(keyword)
2582 :
2583 : CALL keyword_create(keyword, __LOCATION__, name="METALS", &
2584 : description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2585 : usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2586 10486 : n_var=2)
2587 10486 : CALL section_add_keyword(section, keyword)
2588 10486 : CALL keyword_release(keyword)
2589 :
2590 : CALL keyword_create(keyword, __LOCATION__, name="epsilon", &
2591 : description="Defines the epsilon_a parameter of GAL19 potential", &
2592 : usage="epsilon {real}", type_of_var=real_t, &
2593 : default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2594 : unit_str="kcalmol"), &
2595 10486 : n_var=1, unit_str="kcalmol")
2596 10486 : CALL section_add_keyword(section, keyword)
2597 10486 : CALL keyword_release(keyword)
2598 :
2599 : CALL keyword_create(keyword, __LOCATION__, name="bxy", &
2600 : description="Defines the b perpendicular parameter of GAL19 potential", &
2601 : usage="bxy {real}", type_of_var=real_t, &
2602 : default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2603 : unit_str="internal_cp2k"), &
2604 10486 : n_var=1, unit_str="angstrom^-2")
2605 10486 : CALL section_add_keyword(section, keyword)
2606 10486 : CALL keyword_release(keyword)
2607 :
2608 : CALL keyword_create(keyword, __LOCATION__, name="bz", &
2609 : description="Defines the b parallel parameter of GAL19 potential", &
2610 : usage="bz {real}", type_of_var=real_t, &
2611 : default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2612 : unit_str="internal_cp2k"), &
2613 10486 : n_var=1, unit_str="angstrom^-2")
2614 10486 : CALL section_add_keyword(section, keyword)
2615 10486 : CALL keyword_release(keyword)
2616 :
2617 : CALL keyword_create(keyword, __LOCATION__, name="r", &
2618 : description="Defines the R_0 parameters of GAL19 potential for the two METALS. "// &
2619 : "This is the only parameter that is shared between the two section of the "// &
2620 : "forcefield in the case of two metals (alloy). "// &
2621 : "If one metal only is present, a second number should be given but won't be read", &
2622 10486 : usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2623 10486 : CALL section_add_keyword(section, keyword)
2624 10486 : CALL keyword_release(keyword)
2625 :
2626 : CALL keyword_create(keyword, __LOCATION__, name="a1", &
2627 : description="Defines the a1 parameter of GAL19 potential", &
2628 : usage="a1 {real}", type_of_var=real_t, &
2629 10486 : default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2630 10486 : CALL section_add_keyword(section, keyword)
2631 10486 : CALL keyword_release(keyword)
2632 :
2633 : CALL keyword_create(keyword, __LOCATION__, name="a2", &
2634 : description="Defines the a2 parameter of GAL19 potential", &
2635 : usage="a2 {real}", type_of_var=real_t, &
2636 10486 : default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2637 10486 : CALL section_add_keyword(section, keyword)
2638 10486 : CALL keyword_release(keyword)
2639 :
2640 : CALL keyword_create(keyword, __LOCATION__, name="a3", &
2641 : description="Defines the a3 parameter of GAL19 potential", &
2642 : usage="a3 {real}", type_of_var=real_t, &
2643 10486 : default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2644 10486 : CALL section_add_keyword(section, keyword)
2645 10486 : CALL keyword_release(keyword)
2646 :
2647 : CALL keyword_create(keyword, __LOCATION__, name="a4", &
2648 : description="Defines the a4 parameter of GAL19 potential", &
2649 : usage="a4 {real}", type_of_var=real_t, &
2650 10486 : default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2651 10486 : CALL section_add_keyword(section, keyword)
2652 10486 : CALL keyword_release(keyword)
2653 :
2654 : CALL keyword_create(keyword, __LOCATION__, name="A", &
2655 : description="Defines the A parameter of GAL19 potential", &
2656 : usage="A {real}", type_of_var=real_t, &
2657 10486 : default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2658 10486 : CALL section_add_keyword(section, keyword)
2659 10486 : CALL keyword_release(keyword)
2660 :
2661 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2662 : description="Defines the B parameter of GAL19 potential", &
2663 : usage="B {real}", type_of_var=real_t, &
2664 10486 : default_r_val=10.0_dp, n_var=1, unit_str="angstrom^-1")
2665 10486 : CALL section_add_keyword(section, keyword)
2666 10486 : CALL keyword_release(keyword)
2667 :
2668 : CALL keyword_create(keyword, __LOCATION__, name="C", &
2669 : description="Defines the C parameter of GAL19 potential", &
2670 : usage="C {real}", type_of_var=real_t, &
2671 10486 : default_r_val=10.0_dp, n_var=1, unit_str="angstrom^6*kcalmol")
2672 10486 : CALL section_add_keyword(section, keyword)
2673 10486 : CALL keyword_release(keyword)
2674 :
2675 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2676 : description="Defines the cutoff parameter of GAL19 potential", &
2677 : usage="RCUT {real}", type_of_var=real_t, &
2678 : default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2679 : unit_str="angstrom"), &
2680 10486 : n_var=1, unit_str="angstrom")
2681 10486 : CALL section_add_keyword(section, keyword)
2682 10486 : CALL keyword_release(keyword)
2683 : CALL keyword_create(keyword, __LOCATION__, name="Fit_express", &
2684 : description="Demands the particular output needed to a least square fit", &
2685 : usage="Fit_express TRUE", &
2686 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
2687 10486 : CALL section_add_keyword(section, keyword)
2688 10486 : CALL keyword_release(keyword)
2689 10486 : CALL create_GCN_section(subsection)
2690 10486 : CALL section_add_subsection(section, subsection)
2691 10486 : CALL section_release(subsection)
2692 :
2693 10486 : END SUBROUTINE create_Gal_section
2694 :
2695 : ! **************************************************************************************************
2696 : !> \brief This section specifies the input parameters for GAL21
2697 : !> potential type
2698 : !> (??)
2699 : !> \param section ...
2700 : ! **************************************************************************************************
2701 10486 : SUBROUTINE create_Gal21_section(section)
2702 : TYPE(section_type), POINTER :: section
2703 :
2704 : TYPE(keyword_type), POINTER :: keyword
2705 : TYPE(section_type), POINTER :: subsection
2706 :
2707 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2708 : CALL section_create(section, __LOCATION__, name="GAL21", &
2709 : description="Implementation of the GAL21 forcefield, see associated paper", &
2710 20972 : citations=[Clabaut2021], n_keywords=1, n_subsections=1, repeats=.TRUE.)
2711 :
2712 10486 : NULLIFY (keyword, subsection)
2713 :
2714 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2715 : description="Defines the atomic kind involved in the nonbond potential", &
2716 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2717 10486 : n_var=2)
2718 10486 : CALL section_add_keyword(section, keyword)
2719 10486 : CALL keyword_release(keyword)
2720 :
2721 : CALL keyword_create(keyword, __LOCATION__, name="METALS", &
2722 : description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2723 : usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2724 10486 : n_var=2)
2725 10486 : CALL section_add_keyword(section, keyword)
2726 10486 : CALL keyword_release(keyword)
2727 :
2728 : CALL keyword_create(keyword, __LOCATION__, name="epsilon", &
2729 : description="Defines the epsilon parameter of GAL21 potential", &
2730 : usage="epsilon {real} {real} {real}", type_of_var=real_t, &
2731 10486 : n_var=3, unit_str="kcalmol")
2732 10486 : CALL section_add_keyword(section, keyword)
2733 10486 : CALL keyword_release(keyword)
2734 :
2735 : CALL keyword_create(keyword, __LOCATION__, name="bxy", &
2736 : description="Defines the b perpendicular parameter of GAL21 potential", &
2737 : usage="bxy {real} {real}", type_of_var=real_t, &
2738 10486 : n_var=2, unit_str="angstrom^-2")
2739 10486 : CALL section_add_keyword(section, keyword)
2740 10486 : CALL keyword_release(keyword)
2741 :
2742 : CALL keyword_create(keyword, __LOCATION__, name="bz", &
2743 : description="Defines the b parallel parameter of GAL21 potential", &
2744 : usage="bz {real} {real}", type_of_var=real_t, &
2745 10486 : n_var=2, unit_str="angstrom^-2")
2746 10486 : CALL section_add_keyword(section, keyword)
2747 10486 : CALL keyword_release(keyword)
2748 :
2749 : CALL keyword_create(keyword, __LOCATION__, name="r", &
2750 : description="Defines the R_0 parameters of GAL21 potential for the two METALS. "// &
2751 : "This is the only parameter that is shared between the two section of "// &
2752 : "the forcefield in the case of two metals (alloy). "// &
2753 : "If one metal only is present, a second number should be given but won't be read", &
2754 10486 : usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2755 10486 : CALL section_add_keyword(section, keyword)
2756 10486 : CALL keyword_release(keyword)
2757 :
2758 : CALL keyword_create(keyword, __LOCATION__, name="a1", &
2759 : description="Defines the a1 parameter of GAL21 potential", &
2760 : usage="a1 {real} {real} {real}", type_of_var=real_t, &
2761 10486 : n_var=3, unit_str="kcalmol")
2762 10486 : CALL section_add_keyword(section, keyword)
2763 10486 : CALL keyword_release(keyword)
2764 :
2765 : CALL keyword_create(keyword, __LOCATION__, name="a2", &
2766 : description="Defines the a2 parameter of GAL21 potential", &
2767 : usage="a2 {real} {real} {real}", type_of_var=real_t, &
2768 10486 : n_var=3, unit_str="kcalmol")
2769 10486 : CALL section_add_keyword(section, keyword)
2770 10486 : CALL keyword_release(keyword)
2771 :
2772 : CALL keyword_create(keyword, __LOCATION__, name="a3", &
2773 : description="Defines the a3 parameter of GAL21 potential", &
2774 : usage="a3 {real} {real} {real}", type_of_var=real_t, &
2775 10486 : n_var=3, unit_str="kcalmol")
2776 10486 : CALL section_add_keyword(section, keyword)
2777 10486 : CALL keyword_release(keyword)
2778 :
2779 : CALL keyword_create(keyword, __LOCATION__, name="a4", &
2780 : description="Defines the a4 parameter of GAL21 potential", &
2781 : usage="a4 {real} {real} {real}", type_of_var=real_t, &
2782 10486 : n_var=3, unit_str="kcalmol")
2783 10486 : CALL section_add_keyword(section, keyword)
2784 10486 : CALL keyword_release(keyword)
2785 :
2786 : CALL keyword_create(keyword, __LOCATION__, name="A", &
2787 : description="Defines the A parameter of GAL21 potential", &
2788 : usage="A {real} {real}", type_of_var=real_t, &
2789 10486 : n_var=2, unit_str="kcalmol")
2790 10486 : CALL section_add_keyword(section, keyword)
2791 10486 : CALL keyword_release(keyword)
2792 :
2793 : CALL keyword_create(keyword, __LOCATION__, name="B", &
2794 : description="Defines the B parameter of GAL21 potential", &
2795 : usage="B {real} {real}", type_of_var=real_t, &
2796 10486 : n_var=2, unit_str="angstrom^-1")
2797 10486 : CALL section_add_keyword(section, keyword)
2798 10486 : CALL keyword_release(keyword)
2799 :
2800 : CALL keyword_create(keyword, __LOCATION__, name="C", &
2801 : description="Defines the C parameter of GAL21 potential", &
2802 : usage="C {real}", type_of_var=real_t, &
2803 10486 : n_var=1, unit_str="angstrom^6*kcalmol")
2804 10486 : CALL section_add_keyword(section, keyword)
2805 10486 : CALL keyword_release(keyword)
2806 :
2807 : CALL keyword_create(keyword, __LOCATION__, name="AH", &
2808 : description="Defines the AH parameter of GAL21 potential", &
2809 : usage="AH {real} {real}", type_of_var=real_t, &
2810 10486 : n_var=2, unit_str="kcalmol")
2811 10486 : CALL section_add_keyword(section, keyword)
2812 10486 : CALL keyword_release(keyword)
2813 :
2814 : CALL keyword_create(keyword, __LOCATION__, name="BH", &
2815 : description="Defines the BH parameter of GAL21 potential", &
2816 : usage="BH {real} {real}", type_of_var=real_t, &
2817 10486 : n_var=2, unit_str="angstrom^-1")
2818 10486 : CALL section_add_keyword(section, keyword)
2819 10486 : CALL keyword_release(keyword)
2820 :
2821 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
2822 : description="Defines the cutoff parameter of GAL21 potential", &
2823 : usage="RCUT {real}", type_of_var=real_t, &
2824 : default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2825 : unit_str="angstrom"), &
2826 10486 : n_var=1, unit_str="angstrom")
2827 10486 : CALL section_add_keyword(section, keyword)
2828 10486 : CALL keyword_release(keyword)
2829 :
2830 : CALL keyword_create(keyword, __LOCATION__, name="Fit_express", &
2831 : description="Demands the particular output needed to a least square fit", &
2832 : usage="Fit_express TRUE", &
2833 10486 : default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
2834 10486 : CALL section_add_keyword(section, keyword)
2835 10486 : CALL keyword_release(keyword)
2836 :
2837 10486 : CALL create_GCN_section(subsection)
2838 10486 : CALL section_add_subsection(section, subsection)
2839 10486 : CALL section_release(subsection)
2840 :
2841 10486 : END SUBROUTINE create_Gal21_section
2842 :
2843 : ! **************************************************************************************************
2844 : !> \brief This section specifies the input parameters for TABPOT potential type
2845 : !> \param section the section to create
2846 : !> \author teo, Alex Mironenko, Da Teng
2847 : ! **************************************************************************************************
2848 10486 : SUBROUTINE create_TABPOT_section(section)
2849 :
2850 : TYPE(section_type), POINTER :: section
2851 :
2852 : TYPE(keyword_type), POINTER :: keyword
2853 :
2854 10486 : CPASSERT(.NOT. ASSOCIATED(section))
2855 :
2856 : CALL section_create(section, __LOCATION__, name="TABPOT", &
2857 : description="This section specifies the input parameters for TABPOT potential type.", &
2858 10486 : n_keywords=1, n_subsections=0, repeats=.TRUE.)
2859 :
2860 10486 : NULLIFY (keyword)
2861 : CALL keyword_create(keyword, __LOCATION__, name="ATOMS", &
2862 : description="Defines the atomic kind involved", &
2863 : usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2864 10486 : n_var=2)
2865 10486 : CALL section_add_keyword(section, keyword)
2866 10486 : CALL keyword_release(keyword)
2867 :
2868 : CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", &
2869 : variants=["PARMFILE"], &
2870 : description="Specifies the filename that contains the tabulated NONBONDED potential. "// &
2871 : "File structure: the third line of the potential file contains a title. "// &
2872 : "The 4th line contains: 'N', number of data points, 'R', lower bound of distance, distance cutoff. "// &
2873 : "Follow "// &
2874 : "in order npoints lines for index, distance [A], energy [kcal/mol], and force [kcal/mol/A]", &
2875 20972 : usage="PARM_FILE_NAME {FILENAME}", default_lc_val="")
2876 10486 : CALL section_add_keyword(section, keyword)
2877 10486 : CALL keyword_release(keyword)
2878 :
2879 10486 : END SUBROUTINE create_TABPOT_section
2880 :
2881 : ! **************************************************************************************************
2882 : !> \brief This section specifies the input parameters for the subsection GCN of GAL19 and GAL21
2883 : !> potential type
2884 : !> (??)
2885 : !> \param section ...
2886 : ! **************************************************************************************************
2887 20972 : SUBROUTINE create_GCN_section(section)
2888 : TYPE(section_type), POINTER :: section
2889 :
2890 : TYPE(keyword_type), POINTER :: keyword
2891 :
2892 20972 : CPASSERT(.NOT. ASSOCIATED(section))
2893 : CALL section_create(section, __LOCATION__, name="GCN", &
2894 : description="Allow to specify the generalized coordination number of the atoms. "// &
2895 : "Those numbers msust be generated by another program ", &
2896 20972 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
2897 :
2898 20972 : NULLIFY (keyword)
2899 : CALL keyword_create(keyword, __LOCATION__, name="_DEFAULT_KEYWORD_", &
2900 : description="Value of the GCN for the individual atom. Order MUST reflect"// &
2901 : " the one specified for the geometry.", repeats=.TRUE., usage="{Real}", &
2902 20972 : default_r_val=0.0_dp, type_of_var=real_t)
2903 20972 : CALL section_add_keyword(section, keyword)
2904 20972 : CALL keyword_release(keyword)
2905 :
2906 20972 : END SUBROUTINE create_GCN_section
2907 :
2908 : ! **************************************************************************************************
2909 : !> \brief creates the input section for the qs part
2910 : !> \param print_key ...
2911 : !> \param label ...
2912 : !> \param print_level ...
2913 : !> \author teo
2914 : ! **************************************************************************************************
2915 115606 : SUBROUTINE create_dipoles_section(print_key, label, print_level)
2916 : TYPE(section_type), POINTER :: print_key
2917 : CHARACTER(LEN=*), INTENT(IN) :: label
2918 : INTEGER, INTENT(IN) :: print_level
2919 :
2920 : TYPE(keyword_type), POINTER :: keyword
2921 :
2922 115606 : CPASSERT(.NOT. ASSOCIATED(print_key))
2923 : CALL cp_print_key_section_create(print_key, __LOCATION__, name=TRIM(label), &
2924 : description="Section controlling the calculation of "//TRIM(label)//"."// &
2925 : " Note that the result in the periodic case might be defined modulo a certain period,"// &
2926 : " determined by the lattice vectors. During MD, this can lead to jumps.", &
2927 115606 : print_level=print_level, filename="__STD_OUT__")
2928 :
2929 115606 : NULLIFY (keyword)
2930 : CALL keyword_create(keyword, __LOCATION__, &
2931 : name="PERIODIC", &
2932 : description="Use Berry phase formula (PERIODIC=T) or simple operator (PERIODIC=F). "// &
2933 : "The latter normally requires that the CELL is periodic NONE.", &
2934 : usage="PERIODIC {logical}", &
2935 : repeats=.FALSE., &
2936 : n_var=1, &
2937 115606 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
2938 115606 : CALL section_add_keyword(print_key, keyword)
2939 115606 : CALL keyword_release(keyword)
2940 :
2941 : CALL keyword_create(keyword, __LOCATION__, name="REFERENCE", &
2942 : variants=s2a("REF"), &
2943 : description="Define the reference point for the calculation of the electrostatic moment.", &
2944 : usage="REFERENCE COM", &
2945 : enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), &
2946 : enum_desc=s2a("Use Center of Mass", &
2947 : "Use Center of Atomic Charges", &
2948 : "Use User Defined Point (Keyword:REF_POINT)", &
2949 : "Use Origin of Coordinate System"), &
2950 : enum_i_vals=[use_mom_ref_com, &
2951 : use_mom_ref_coac, &
2952 : use_mom_ref_user, &
2953 : use_mom_ref_zero], &
2954 115606 : default_i_val=use_mom_ref_zero)
2955 115606 : CALL section_add_keyword(print_key, keyword)
2956 115606 : CALL keyword_release(keyword)
2957 :
2958 : CALL keyword_create(keyword, __LOCATION__, name="REFERENCE_POINT", &
2959 : variants=s2a("REF_POINT"), &
2960 : description="Fixed reference point for the calculations of the electrostatic moment.", &
2961 : usage="REFERENCE_POINT x y z", &
2962 : repeats=.FALSE., &
2963 : n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
2964 : type_of_var=real_t, &
2965 115606 : unit_str='bohr')
2966 115606 : CALL section_add_keyword(print_key, keyword)
2967 115606 : CALL keyword_release(keyword)
2968 115606 : END SUBROUTINE create_dipoles_section
2969 :
2970 : END MODULE input_cp2k_mm
|