(git:6344619)
Loading...
Searching...
No Matches
input_cp2k_mm.F
Go to the documentation of this file.
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! **************************************************************************************************
17 USE bibliography, ONLY: &
27 USE cp_units, ONLY: cp_unit_to_cp2k
28 USE force_field_kind_types, ONLY: &
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
67 PUBLIC :: create_charge_section
68!***
69CONTAINS
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 SUBROUTINE create_mm_section(section)
77 TYPE(section_type), POINTER :: section
78
79 TYPE(section_type), POINTER :: subsection
80
81 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 n_keywords=5, n_subsections=0, repeats=.false.)
85
86 NULLIFY (subsection)
87
88 CALL create_forcefield_section(subsection)
89 CALL section_add_subsection(section, subsection)
90 CALL section_release(subsection)
91
92 CALL create_neighbor_lists_section(subsection)
93 CALL section_add_subsection(section, subsection)
94 CALL section_release(subsection)
95
96 CALL create_poisson_section(subsection)
97 CALL section_add_subsection(section, subsection)
98 CALL section_release(subsection)
99
100 CALL create_per_efield_section(subsection)
101 CALL section_add_subsection(section, subsection)
102 CALL section_release(subsection)
103
104 CALL create_print_mm_section(subsection)
105 CALL section_add_subsection(section, subsection)
106 CALL section_release(subsection)
107
108 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 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 cpassert(.NOT. ASSOCIATED(section))
122 CALL section_create(section, __location__, name="print", &
123 description="Section of possible print options in MM code.", &
124 n_keywords=0, n_subsections=1, repeats=.false.)
125
126 NULLIFY (print_key, keyword)
127
128 CALL cp_print_key_section_create(print_key, __location__, "DERIVATIVES", &
129 description="Controls the printing of derivatives.", &
130 print_level=high_print_level, filename="__STD_OUT__")
131 CALL section_add_subsection(section, print_key)
132 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 print_level=high_print_level, filename="__STD_OUT__")
138 CALL section_add_subsection(section, print_key)
139 CALL section_release(print_key)
140
141 CALL create_dipoles_section(print_key, "DIPOLE", medium_print_level)
142 CALL section_add_subsection(section, print_key)
143 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 print_level=high_print_level, filename="", unit_str="angstrom")
148 CALL section_add_subsection(section, print_key)
149 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 print_level=medium_print_level, filename="__STD_OUT__")
155 CALL section_add_subsection(section, print_key)
156 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 print_level=high_print_level, filename="__STD_OUT__")
162 CALL section_add_subsection(section, print_key)
163 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 print_level=silent_print_level, filename="__STD_OUT__")
168 CALL section_add_subsection(section, print_key)
169 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 print_level=low_print_level, filename="__STD_OUT__")
174 CALL section_add_subsection(section, print_key)
175 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 print_level=debug_print_level + 1, filename="", common_iter_levels=2)
180 CALL section_add_subsection(section, print_key)
181 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 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 default_l_val=.true., lone_keyword_l_val=.true.)
191 CALL section_add_keyword(print_key, keyword)
192 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 default_l_val=.false., lone_keyword_l_val=.true.)
198 CALL section_add_keyword(print_key, keyword)
199 CALL keyword_release(keyword)
200
201 CALL section_add_subsection(section, print_key)
202 CALL section_release(print_key)
203
204 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 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 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 n_keywords=2, n_subsections=2, repeats=.false.)
223
224 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 default_i_val=do_ff_undef)
242 CALL section_add_keyword(section, keyword)
243 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 usage="PARM_FILE_NAME {FILENAME}", type_of_var=lchar_t)
248 CALL section_add_keyword(section, keyword)
249 CALL keyword_release(keyword)
250
251 CALL keyword_create(keyword, __location__, name="VDW_SCALE14", &
252 description="Scaling factor for the VDW 1-4 ", &
253 usage="VDW_SCALE14 1.0", default_r_val=1.0_dp)
254 CALL section_add_keyword(section, keyword)
255 CALL keyword_release(keyword)
256
257 CALL keyword_create(keyword, __location__, name="EI_SCALE14", &
258 description="Scaling factor for the electrostatics 1-4 ", &
259 usage="EI_SCALE14 1.0", default_r_val=0.0_dp)
260 CALL section_add_keyword(section, keyword)
261 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 usage="SHIFT_CUTOFF <LOGICAL>", default_l_val=.true.)
270 CALL section_add_keyword(section, keyword)
271 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 usage="DO_NONBONDED T", default_l_val=.true., lone_keyword_l_val=.true.)
281 CALL section_add_keyword(section, keyword)
282 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 usage="DO_ELECTROSTATICS T", default_l_val=.true., lone_keyword_l_val=.true.)
289 CALL section_add_keyword(section, keyword)
290 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 lone_keyword_l_val=.true.)
298 CALL section_add_keyword(section, keyword)
299 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 usage="MULTIPLE_POTENTIAL T", default_l_val=.false., lone_keyword_l_val=.true.)
305 CALL section_add_keyword(section, keyword)
306 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 usage="ZBL_SCATTERING T", default_l_val=.false., lone_keyword_l_val=.true.)
312 CALL section_add_keyword(section, keyword)
313 CALL keyword_release(keyword)
314
315 !
316 ! subsections
317 !
318 CALL create_spline_section(subsection)
319 CALL section_add_subsection(section, subsection)
320 CALL section_release(subsection)
321
322 CALL create_nonbonded_section(subsection)
323 CALL section_add_subsection(section, subsection)
324 CALL section_release(subsection)
325
326 CALL create_nonbonded14_section(subsection)
327 CALL section_add_subsection(section, subsection)
328 CALL section_release(subsection)
329
330 CALL create_charge_section(subsection)
331 CALL section_add_subsection(section, subsection)
332 CALL section_release(subsection)
333
334 CALL create_charges_section(subsection)
335 CALL section_add_subsection(section, subsection)
336 CALL section_release(subsection)
337
338 CALL create_shell_section(subsection)
339 CALL section_add_subsection(section, subsection)
340 CALL section_release(subsection)
341
342 CALL create_bond_section(subsection, "BOND")
343 CALL section_add_subsection(section, subsection)
344 CALL section_release(subsection)
345
346 CALL create_bend_section(subsection)
347 CALL section_add_subsection(section, subsection)
348 CALL section_release(subsection)
349
350 CALL create_torsion_section(subsection)
351 CALL section_add_subsection(section, subsection)
352 CALL section_release(subsection)
353
354 CALL create_improper_section(subsection)
355 CALL section_add_subsection(section, subsection)
356 CALL section_release(subsection)
357
358 CALL create_opbend_section(subsection)
359 CALL section_add_subsection(section, subsection)
360 CALL section_release(subsection)
361
362 CALL create_dipole_section(subsection)
363 CALL section_add_subsection(section, subsection)
364 CALL section_release(subsection)
365
366 CALL create_quadrupole_section(subsection)
367 CALL section_add_subsection(section, subsection)
368 CALL section_release(subsection)
369
370 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 SUBROUTINE create_spline_section(section)
378 TYPE(section_type), POINTER :: section
379
380 TYPE(keyword_type), POINTER :: keyword
381
382 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 n_keywords=1, n_subsections=0, repeats=.true.)
387
388 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 unit_str="angstrom")
396 CALL section_add_keyword(section, keyword)
397 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 unit_str="angstrom")
405 CALL section_add_keyword(section, keyword)
406 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 default_r_val=0.5_dp, unit_str="hartree")
413 CALL section_add_keyword(section, keyword)
414 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 usage="EMAX_ACCURACY <REAL>", default_r_val=0.02_dp, unit_str="hartree")
421 CALL section_add_keyword(section, keyword)
422 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 usage="EPS_SPLINE <REAL>", default_r_val=1.0e-7_dp, unit_str="hartree")
429 CALL section_add_keyword(section, keyword)
430 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 usage="NPOINTS 1024", default_i_val=-1)
436 CALL section_add_keyword(section, keyword)
437 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 usage="UNIQUE_SPLINE <LOGICAL>", lone_keyword_l_val=.true., default_l_val=.false.)
443 CALL section_add_keyword(section, keyword)
444 CALL keyword_release(keyword)
445
446 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 SUBROUTINE create_torsion_section(section)
454 TYPE(section_type), POINTER :: section
455
456 TYPE(keyword_type), POINTER :: keyword
457
458 cpassert(.NOT. ASSOCIATED(section))
459 CALL section_create(section, __location__, name="TORSION", &
460 description="Specifies the torsion potential of the MM system.", &
461 n_keywords=1, n_subsections=0, repeats=.true.)
462
463 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 n_var=4)
468 CALL section_add_keyword(section, keyword)
469 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 default_i_val=do_ff_charmm)
486 CALL section_add_keyword(section, keyword)
487 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 n_var=1, unit_str="hartree")
493 CALL section_add_keyword(section, keyword)
494 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 n_var=1, unit_str="rad", default_r_val=0.0_dp)
500 CALL section_add_keyword(section, keyword)
501 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 n_var=1)
507 CALL section_add_keyword(section, keyword)
508 CALL keyword_release(keyword)
509
510 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 SUBROUTINE create_improper_section(section)
518 TYPE(section_type), POINTER :: section
519
520 TYPE(keyword_type), POINTER :: keyword
521
522 cpassert(.NOT. ASSOCIATED(section))
523 CALL section_create(section, __location__, name="IMPROPER", &
524 description="Specifies the improper torsion potential of the MM system.", &
525 n_keywords=1, n_subsections=0, repeats=.true.)
526
527 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 n_var=4)
532 CALL section_add_keyword(section, keyword)
533 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, &
547 default_i_val=do_ff_charmm)
548 CALL section_add_keyword(section, keyword)
549 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 n_var=1, unit_str="hartree*rad^-2")
555 CALL section_add_keyword(section, keyword)
556 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 n_var=1, unit_str="rad")
562 CALL section_add_keyword(section, keyword)
563 CALL keyword_release(keyword)
564
565 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 SUBROUTINE create_opbend_section(section)
573 TYPE(section_type), POINTER :: section
574
575 TYPE(keyword_type), POINTER :: keyword
576
577 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 n_keywords=1, n_subsections=0, repeats=.true.)
583
584 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 n_var=4)
589 CALL section_add_keyword(section, keyword)
590 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 default_i_val=do_ff_harmonic)
605 CALL section_add_keyword(section, keyword)
606 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 n_var=1, unit_str="hartree*rad^-2")
612 CALL section_add_keyword(section, keyword)
613 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 n_var=1, unit_str="rad")
619 CALL section_add_keyword(section, keyword)
620 CALL keyword_release(keyword)
621
622 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 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 cpassert(.NOT. ASSOCIATED(section))
636 CALL section_create(section, __location__, name="BEND", &
637 description="Specifies the bend potential of the MM system.", &
638 n_keywords=11, n_subsections=1, repeats=.true.)
639
640 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 n_var=3)
646 CALL section_add_keyword(section, keyword)
647 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, &
674 do_ff_mm3, &
676 default_i_val=do_ff_charmm)
677 CALL section_add_keyword(section, keyword)
678 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 n_var=1, unit_str="hartree*rad^-2")
684 CALL section_add_keyword(section, keyword)
685 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 n_var=1, unit_str="rad^-1")
691 CALL section_add_keyword(section, keyword)
692 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 n_var=1, unit_str="bohr")
698 CALL section_add_keyword(section, keyword)
699 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 n_var=1, unit_str="bohr")
704 CALL section_add_keyword(section, keyword)
705 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 n_var=1, unit_str="hartree*bohr^-1*rad^-1")
710 CALL section_add_keyword(section, keyword)
711 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 n_var=1, unit_str="hartree*bohr^-1*rad^-1")
716 CALL section_add_keyword(section, keyword)
717 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 n_var=1, unit_str="hartree*bohr^-2")
722 CALL section_add_keyword(section, keyword)
723 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 n_var=1, unit_str='rad')
729 CALL section_add_keyword(section, keyword)
730 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 n_var=-1, unit_str="hartree")
739 CALL section_add_keyword(section, keyword)
740 CALL keyword_release(keyword)
741
742 ! Create the Urey-Bradley section
743 CALL create_bond_section(subsection, "UB")
744 CALL section_add_subsection(section, subsection)
745 CALL section_release(subsection)
746
747 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 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 cpassert(.NOT. ASSOCIATED(section))
763 NULLIFY (keyword)
764
765 IF (trim(label) == "UB") THEN
766 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 n_keywords=1, n_subsections=0, repeats=.false.)
771
772 ELSE
773 tag = " Bond "
774 CALL section_create(section, __location__, name=trim(label), &
775 description="Specifies the bond potential", &
776 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 n_var=2)
782 CALL section_add_keyword(section, keyword)
783 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, &
806 do_ff_morse, &
807 do_ff_cubic, &
808 do_ff_fues], &
809 default_i_val=do_ff_charmm)
810 CALL section_add_keyword(section, keyword)
811 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 n_var=-1, unit_str="internal_cp2k")
819 CALL section_add_keyword(section, keyword)
820 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 n_var=1, unit_str="bohr^-1")
826 CALL section_add_keyword(section, keyword)
827 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 n_var=1, unit_str="bohr")
833 CALL section_add_keyword(section, keyword)
834 CALL keyword_release(keyword)
835
836 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 SUBROUTINE create_charges_section(section)
844 TYPE(section_type), POINTER :: section
845
846 TYPE(keyword_type), POINTER :: keyword
847
848 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 n_keywords=1, n_subsections=0, repeats=.false.)
853
854 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 type_of_var=real_t)
859 CALL section_add_keyword(section, keyword)
860 CALL keyword_release(keyword)
861
862 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 SUBROUTINE create_charge_section(section)
870 TYPE(section_type), POINTER :: section
871
872 TYPE(keyword_type), POINTER :: keyword
873
874 cpassert(.NOT. ASSOCIATED(section))
875 CALL section_create(section, __location__, name="charge", &
876 description="This section specifies the charge of the MM atoms", &
877 n_keywords=1, n_subsections=0, repeats=.true.)
878
879 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 n_var=1)
885 CALL section_add_keyword(section, keyword)
886 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 n_var=1)
892 CALL section_add_keyword(section, keyword)
893 CALL keyword_release(keyword)
894
895 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 SUBROUTINE create_quadrupole_section(section)
903 TYPE(section_type), POINTER :: section
904
905 TYPE(keyword_type), POINTER :: keyword
906
907 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 n_keywords=1, n_subsections=0, repeats=.true.)
913
914 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 n_var=1)
920 CALL section_add_keyword(section, keyword)
921 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 n_var=1, unit_str='internal_cp2k')
927 CALL section_add_keyword(section, keyword)
928 CALL keyword_release(keyword)
929
930 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 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 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 n_keywords=1, n_subsections=1, repeats=.true.)
948
949 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 n_var=1)
955 CALL section_add_keyword(section, keyword)
956 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 n_var=1, unit_str='angstrom^3')
962 CALL section_add_keyword(section, keyword)
963 CALL keyword_release(keyword)
964
965 CALL create_damping_section(subsection)
966 CALL section_add_subsection(section, subsection)
967 CALL section_release(subsection)
968 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 SUBROUTINE create_damping_section(section)
976 TYPE(section_type), POINTER :: section
977
978 TYPE(keyword_type), POINTER :: keyword
979
980 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 n_keywords=4, n_subsections=0, repeats=.true.)
984
985 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 n_var=1)
991 CALL section_add_keyword(section, keyword)
992 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 n_var=1, default_c_val="TANG-TOENNIES")
998 CALL section_add_keyword(section, keyword)
999 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 n_var=1, default_i_val=3)
1005 CALL section_add_keyword(section, keyword)
1006 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 n_var=1, unit_str='angstrom^-1')
1012 CALL section_add_keyword(section, keyword)
1013 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 n_var=1, unit_str='')
1019 CALL section_add_keyword(section, keyword)
1020 CALL keyword_release(keyword)
1021
1022 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 SUBROUTINE create_shell_section(section)
1030 TYPE(section_type), POINTER :: section
1031
1032 TYPE(keyword_type), POINTER :: keyword
1033
1034 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 citations=[dick1958, mitchell1993, devynck2012])
1039
1040 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 usage="H", default_c_val="DEFAULT")
1045 CALL section_add_keyword(section, keyword)
1046 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 default_r_val=0.0_dp)
1053 CALL section_add_keyword(section, keyword)
1054 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 default_r_val=0.0_dp)
1061 CALL section_add_keyword(section, keyword)
1062 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 default_r_val=0.1_dp)
1069 CALL section_add_keyword(section, keyword)
1070 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 unit_str="hartree*bohr^-2")
1080 CALL section_add_keyword(section, keyword)
1081 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 unit_str="hartree*bohr^-4")
1092 CALL section_add_keyword(section, keyword)
1093 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 unit_str="angstrom")
1101 CALL section_add_keyword(section, keyword)
1102 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 unit_str="angstrom")
1111 CALL section_add_keyword(section, keyword)
1112 CALL keyword_release(keyword)
1113
1114 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 SUBROUTINE create_nonbonded14_section(section)
1123 TYPE(section_type), POINTER :: section
1124
1125 TYPE(section_type), POINTER :: subsection
1126
1127 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 n_keywords=1, n_subsections=0, repeats=.false.)
1131
1132 NULLIFY (subsection)
1133 CALL create_lj_section(subsection)
1134 CALL section_add_subsection(section, subsection)
1135 CALL section_release(subsection)
1136
1137 CALL create_williams_section(subsection)
1138 CALL section_add_subsection(section, subsection)
1139 CALL section_release(subsection)
1140
1141 CALL create_goodwin_section(subsection)
1142 CALL section_add_subsection(section, subsection)
1143 CALL section_release(subsection)
1144
1145 CALL create_genpot_section(subsection)
1146 CALL section_add_subsection(section, subsection)
1147 CALL section_release(subsection)
1148
1149 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 SUBROUTINE create_nonbonded_section(section)
1158 TYPE(section_type), POINTER :: section
1159
1160 TYPE(section_type), POINTER :: subsection
1161
1162 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 n_keywords=1, n_subsections=0, repeats=.false.)
1166
1167 NULLIFY (subsection)
1168 CALL create_lj_section(subsection)
1169 CALL section_add_subsection(section, subsection)
1170 CALL section_release(subsection)
1171
1172 CALL create_williams_section(subsection)
1173 CALL section_add_subsection(section, subsection)
1174 CALL section_release(subsection)
1175
1176 CALL create_eam_section(subsection)
1177 CALL section_add_subsection(section, subsection)
1178 CALL section_release(subsection)
1179
1180 CALL create_nequip_section(subsection)
1181 CALL section_add_subsection(section, subsection)
1182 CALL section_release(subsection)
1183
1184 CALL create_ace_section(subsection)
1185 CALL section_add_subsection(section, subsection)
1186 CALL section_release(subsection)
1187
1188 CALL create_mace_section(subsection)
1189 CALL section_add_subsection(section, subsection)
1190 CALL section_release(subsection)
1191
1192 CALL create_deepmd_section(subsection)
1193 CALL section_add_subsection(section, subsection)
1194 CALL section_release(subsection)
1195
1196 CALL create_goodwin_section(subsection)
1197 CALL section_add_subsection(section, subsection)
1198 CALL section_release(subsection)
1199
1200 CALL create_ipbv_section(subsection)
1201 CALL section_add_subsection(section, subsection)
1202 CALL section_release(subsection)
1203
1204 CALL create_bmhft_section(subsection)
1205 CALL section_add_subsection(section, subsection)
1206 CALL section_release(subsection)
1207
1208 CALL create_bmhftd_section(subsection)
1209 CALL section_add_subsection(section, subsection)
1210 CALL section_release(subsection)
1211
1212 CALL create_buck4r_section(subsection)
1213 CALL section_add_subsection(section, subsection)
1214 CALL section_release(subsection)
1215
1216 CALL create_buckmorse_section(subsection)
1217 CALL section_add_subsection(section, subsection)
1218 CALL section_release(subsection)
1219
1220 CALL create_genpot_section(subsection)
1221 CALL section_add_subsection(section, subsection)
1222 CALL section_release(subsection)
1223
1224 CALL create_tersoff_section(subsection)
1225 CALL section_add_subsection(section, subsection)
1226 CALL section_release(subsection)
1227
1228 CALL create_siepmann_section(subsection)
1229 CALL section_add_subsection(section, subsection)
1230 CALL section_release(subsection)
1231
1232 CALL create_gal_section(subsection)
1233 CALL section_add_subsection(section, subsection)
1234 CALL section_release(subsection)
1235
1236 CALL create_gal21_section(subsection)
1237 CALL section_add_subsection(section, subsection)
1238 CALL section_release(subsection)
1239
1240 CALL create_tabpot_section(subsection)
1241 CALL section_add_subsection(section, subsection)
1242 CALL section_release(subsection)
1243
1244 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! **************************************************************************************************
1253 TYPE(section_type), POINTER :: section
1254
1255 TYPE(keyword_type), POINTER :: keyword
1256
1257 NULLIFY (keyword)
1258 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 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 unit_str="angstrom")
1269 CALL section_add_keyword(section, keyword)
1270 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 default_l_val=.false., lone_keyword_l_val=.true.)
1276 CALL section_add_keyword(section, keyword)
1277 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 default_l_val=.true., lone_keyword_l_val=.true.)
1286 CALL section_add_keyword(section, keyword)
1287 CALL keyword_release(keyword)
1288
1289 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 SUBROUTINE create_genpot_section(section)
1297 TYPE(section_type), POINTER :: section
1298
1299 TYPE(keyword_type), POINTER :: keyword
1300
1301 cpassert(.NOT. ASSOCIATED(section))
1302
1303 CALL create_function_section(section, "GENPOT", "FUNCTION", &
1304 description="This section specifies a generic potential function "// &
1305 "between two kinds of atoms (identical or distinct). The VARIABLES "// &
1306 "keyword should define exactly one symbol as the variable in the "// &
1307 "generic function.", &
1308 repeats=.true.)
1309
1310 NULLIFY (keyword)
1311 CALL keyword_create(keyword, __location__, name="ATOMS", &
1312 description="Defines the two atomic kinds involved in the generic "// &
1313 "potential function. The kind names are not case sensitive.", &
1314 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, n_var=2)
1315 CALL section_add_keyword(section, keyword)
1316 CALL keyword_release(keyword)
1317
1318 CALL keyword_create(keyword, __location__, name="RCUT", &
1319 description="Defines the cutoff parameter of the generic potential.", &
1320 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1321 unit_str="angstrom"), &
1322 unit_str="angstrom")
1323 CALL section_add_keyword(section, keyword)
1324 CALL keyword_release(keyword)
1325
1326 CALL keyword_create(keyword, __location__, name="RMIN", &
1327 description="Defines the lower bound of the potential. If not set the "// &
1328 "range is the full range generated by the spline.", usage="RMIN {real}", &
1329 type_of_var=real_t, unit_str="angstrom")
1330 CALL section_add_keyword(section, keyword)
1331 CALL keyword_release(keyword)
1332
1333 CALL keyword_create(keyword, __location__, name="RMAX", &
1334 description="Defines the upper bound of the potential. If not set the "// &
1335 "range is the full range generated by the spline.", usage="RMAX {real}", &
1336 type_of_var=real_t, unit_str="angstrom")
1337 CALL section_add_keyword(section, keyword)
1338 CALL keyword_release(keyword)
1339
1340 END SUBROUTINE create_genpot_section
1341
1342! **************************************************************************************************
1343!> \brief This section specifies the input parameters for EAM potential type
1344!> \param section the section to create
1345!> \author teo
1346! **************************************************************************************************
1347 SUBROUTINE create_eam_section(section)
1348 TYPE(section_type), POINTER :: section
1349
1350 TYPE(keyword_type), POINTER :: keyword
1351
1352 cpassert(.NOT. ASSOCIATED(section))
1353 CALL section_create(section, __location__, name="EAM", &
1354 description="This section specifies the input parameters for EAM potential type.", &
1355 citations=[foiles1986], n_keywords=1, n_subsections=0, repeats=.true.)
1356
1357 NULLIFY (keyword)
1358
1359 CALL keyword_create(keyword, __location__, name="ATOMS", &
1360 description="Defines the atomic kind involved in the nonbond potential", &
1361 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1362 n_var=2)
1363 CALL section_add_keyword(section, keyword)
1364 CALL keyword_release(keyword)
1365
1366 CALL keyword_create(keyword, __location__, name="PARM_FILE_NAME", &
1367 variants=["PARMFILE"], &
1368 description="Specifies the filename that contains the tabulated EAM potential. "// &
1369 "File structure: the first line of the potential file contains a title. "// &
1370 "The second line contains: atomic number, mass and lattice constant. "// &
1371 "These information are parsed but not used in CP2K. The third line contains: "// &
1372 "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// &
1373 "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// &
1374 "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// &
1375 "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// &
1376 "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// &
1377 "and its derivative [ev*au_c^-1].", &
1378 usage="PARM_FILE_NAME {FILENAME}", default_lc_val=" ")
1379 CALL section_add_keyword(section, keyword)
1380 CALL keyword_release(keyword)
1381
1382 END SUBROUTINE create_eam_section
1383
1384! **************************************************************************************************
1385!> \brief This section specifies the input parameters for NEQUIP potential type
1386!> \param section the section to create
1387!> \author teo
1388! **************************************************************************************************
1389 SUBROUTINE create_nequip_section(section)
1390 TYPE(section_type), POINTER :: section
1391
1392 TYPE(keyword_type), POINTER :: keyword
1393
1394 cpassert(.NOT. ASSOCIATED(section))
1395 CALL section_create(section, __location__, name="NEQUIP", &
1396 description="This section specifies the input parameters for NEQUIP potential type "// &
1397 "based on equivariant neural networks, and for ALLEGRO, a local large-scale variant. "// &
1398 "Note: To enable the prediction of stress, along with energies and forces, the keyword "// &
1399 "StressForceOutput must be included in the nequip config *.yaml file used to train the "// &
1400 "model, regardless of whether the model has been trained on the stress. "// &
1401 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1402 citations=[batzner2022, musaelian2023, tan2025], n_keywords=1, n_subsections=0, repeats=.false.)
1403
1404 NULLIFY (keyword)
1405
1406 CALL keyword_create(keyword, __location__, name="ATOMS", &
1407 description="Defines the atomic kinds involved in the NEQUIP potential. "// &
1408 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1409 "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1410 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1411 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1412 n_var=-1)
1413 CALL section_add_keyword(section, keyword)
1414 CALL keyword_release(keyword)
1415
1416 CALL keyword_create(keyword, __location__, name="MODEL_TYPE", &
1417 variants=["MODEL"], &
1418 description="Specifies the type of model used. Allowed values are NEQUIP or ALLEGRO.", &
1419 usage="MODEL_TYPE {NEQUIP}", default_lc_val=" ")
1420 CALL section_add_keyword(section, keyword)
1421 CALL keyword_release(keyword)
1422
1423 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1424 variants=["MODEL_FILE_NAME"], &
1425 description="Specifies the filename that contains the NEQUIP model.", &
1426 usage="POT_FILE_NAME {FILENAME}", default_lc_val=" ")
1427 CALL section_add_keyword(section, keyword)
1428 CALL keyword_release(keyword)
1429
1430 CALL keyword_create(keyword, __location__, name="UNIT_LENGTH", &
1431 description="Units of length in the NEQUIP model.pth file. "// &
1432 "The units of positions, cell, energies and forces must be self-consistent: "// &
1433 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1434 usage="UNIT_LENGTH angstrom", default_c_val="angstrom")
1435 CALL section_add_keyword(section, keyword)
1436 CALL keyword_release(keyword)
1437
1438 CALL keyword_create(keyword, __location__, name="UNIT_ENERGY", &
1439 description="Units of energy in the NEQUIP model.pth file. "// &
1440 "The units of positions, energies and forces must be self-consistent: "// &
1441 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1442 usage="UNIT_ENERGY hartree", default_c_val="eV")
1443 CALL section_add_keyword(section, keyword)
1444 CALL keyword_release(keyword)
1445
1446 CALL keyword_create(keyword, __location__, name="UNIT_FORCES", &
1447 description="Units of the forces in the NEQUIP model.pth file. "// &
1448 "The units of positions, energies and forces must be self-consistent: "// &
1449 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1450 usage="UNIT_FORCES hartree/bohr", default_c_val="eV/Angstrom")
1451 CALL section_add_keyword(section, keyword)
1452 CALL keyword_release(keyword)
1453
1454 END SUBROUTINE create_nequip_section
1455
1456! **************************************************************************************************
1457!> \brief This section specifies the input parameters for MACE potential type
1458!> \param section the section to create
1459!> \author Xinyue Sun
1460! **************************************************************************************************
1461 SUBROUTINE create_mace_section(section)
1462 TYPE(section_type), POINTER :: section
1463
1464 TYPE(keyword_type), POINTER :: keyword
1465
1466 cpassert(.NOT. ASSOCIATED(section))
1467 CALL section_create(section, __location__, name="MACE", &
1468 description="This section specifies the input parameters for MACE potential type, "// &
1469 "a higher-order equivariant message-passing neural network. "// &
1470 "The MACE model must be exported to a TorchScript file that takes a single "// &
1471 "dictionary argument (see the create_cp2k_model.py helper). "// &
1472 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1473 citations=[batatia2022], n_keywords=1, n_subsections=0, repeats=.false.)
1474
1475 NULLIFY (keyword)
1476
1477 CALL keyword_create(keyword, __location__, name="ATOMS", &
1478 description="Defines the atomic kinds involved in the MACE potential. "// &
1479 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1480 "to MACE atom types is correct. This mapping should also be consistent for the "// &
1481 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1482 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1483 n_var=-1)
1484 CALL section_add_keyword(section, keyword)
1485 CALL keyword_release(keyword)
1486
1487 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1488 variants=["MODEL_FILE_NAME"], &
1489 description="Specifies the filename that contains the exported MACE model. "// &
1490 "MACE models use standardized units (Angstrom for length, eV for energy, "// &
1491 "eV/Angstrom for forces), so no unit keywords are required.", &
1492 usage="POT_FILE_NAME {FILENAME}", default_lc_val=" ")
1493 CALL section_add_keyword(section, keyword)
1494 CALL keyword_release(keyword)
1495
1496 END SUBROUTINE create_mace_section
1497
1498! **************************************************************************************************
1499!> \brief This section specifies the input parameters for ACE potential type
1500!> \param section the section to create
1501!> \author
1502! **************************************************************************************************
1503 SUBROUTINE create_ace_section(section)
1504 TYPE(section_type), POINTER :: section
1505
1506 TYPE(keyword_type), POINTER :: keyword
1507
1508 CALL section_create(section, __location__, name="ACE", &
1509 description="This section specifies the input parameters for Atomic Cluster Expansion type. "// &
1510 "Mainly intended for accurate representation of "// &
1511 "potential energy surfaces. "// &
1512 "Requires linking with ACE library from "// &
1513 "<a href=""https://github.com/ICAMS/lammps-user-pace"" "// &
1514 "target=""_blank"">https://github.com/ICAMS/lammps-user-pace</a> .", &
1516 n_keywords=1, n_subsections=0, repeats=.false.)
1517 NULLIFY (keyword)
1518
1519 CALL keyword_create(keyword, __location__, name="ATOMS", &
1520 description="Defines the atomic species. "// &
1521 "Provide a list of each element, "// &
1522 "making sure that the mapping from the ATOMS list to ACE atom types is correct.", &
1523 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1524 n_var=-1)
1525 CALL section_add_keyword(section, keyword)
1526 CALL keyword_release(keyword)
1527 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1528 variants=["PARMFILE"], &
1529 description="Specifies the filename that contains the ACE potential parameters.", &
1530 usage="POT_FILE_NAME {FILENAME}", default_lc_val="test.yaml")
1531 CALL section_add_keyword(section, keyword)
1532 CALL keyword_release(keyword)
1533 END SUBROUTINE create_ace_section
1534
1535! **************************************************************************************************
1536!> \brief This section specifies the input parameters for DEEPMD potential type
1537!> \param section the section to create
1538!> \author ybzhuang
1539! **************************************************************************************************
1540 SUBROUTINE create_deepmd_section(section)
1541 TYPE(section_type), POINTER :: section
1542
1543 TYPE(keyword_type), POINTER :: keyword
1544
1545 CALL section_create(section, __location__, name="DEEPMD", &
1546 description="This section specifies the input parameters for Deep Potential type. "// &
1547 "Mainly intended for things like neural network to DFT "// &
1548 "to achieve correlated-wavefunction-like accuracy. "// &
1549 "Requires linking with DeePMD-kit library from "// &
1550 "<a href=""https://docs.deepmodeling.com/projects/deepmd/en/master"" "// &
1551 "target=""_blank"">https://docs.deepmodeling.com/projects/deepmd/en/master</a> .", &
1552 citations=[wang2018, zeng2023], n_keywords=1, n_subsections=0, repeats=.false.)
1553 NULLIFY (keyword)
1554 CALL keyword_create(keyword, __location__, name="ATOMS", &
1555 description="Defines the atomic kinds involved in the Deep Potential. "// &
1556 "Provide a list of each element, "// &
1557 "making sure that the mapping from the ATOMS list to DeePMD atom types is correct.", &
1558 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1559 n_var=-1)
1560 CALL section_add_keyword(section, keyword)
1561 CALL keyword_release(keyword)
1562 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1563 variants=["PARMFILE"], &
1564 description="Specifies the filename that contains the DeePMD-kit potential.", &
1565 usage="POT_FILE_NAME {FILENAME}", default_lc_val="graph.pb")
1566 CALL section_add_keyword(section, keyword)
1567 CALL keyword_release(keyword)
1568 CALL keyword_create(keyword, __location__, name="ATOMS_DEEPMD_TYPE", &
1569 description="Specifies the atomic TYPE for the DeePMD-kit potential. "// &
1570 "Provide a list of index, making sure that the mapping "// &
1571 "from the ATOMS list to DeePMD atom types is correct. ", &
1572 usage="ATOMS_DEEPMD_TYPE {TYPE INTEGER 1} {TYPE INTEGER 2} .. "// &
1573 "{TYPE INTEGER N}", type_of_var=integer_t, &
1574 n_var=-1)
1575 CALL section_add_keyword(section, keyword)
1576 CALL keyword_release(keyword)
1577 END SUBROUTINE create_deepmd_section
1578
1579! **************************************************************************************************
1580!> \brief This section specifies the input parameters for Lennard-Jones potential type
1581!> \param section the section to create
1582!> \author teo
1583! **************************************************************************************************
1584 SUBROUTINE create_lj_section(section)
1585 TYPE(section_type), POINTER :: section
1586
1587 TYPE(keyword_type), POINTER :: keyword
1588
1589 cpassert(.NOT. ASSOCIATED(section))
1590 CALL section_create(section, __location__, name="lennard-jones", &
1591 description="This section specifies the input parameters for LENNARD-JONES potential type. "// &
1592 "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", &
1593 n_keywords=1, n_subsections=0, repeats=.true.)
1594
1595 NULLIFY (keyword)
1596
1597 CALL keyword_create(keyword, __location__, name="ATOMS", &
1598 description="Defines the atomic kind involved in the nonbond potential", &
1599 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1600 n_var=2)
1601 CALL section_add_keyword(section, keyword)
1602 CALL keyword_release(keyword)
1603
1604 CALL keyword_create(keyword, __location__, name="EPSILON", &
1605 description="Defines the EPSILON parameter of the LJ potential", &
1606 usage="EPSILON {real}", type_of_var=real_t, &
1607 n_var=1, unit_str="K_e")
1608 CALL section_add_keyword(section, keyword)
1609 CALL keyword_release(keyword)
1610
1611 CALL keyword_create(keyword, __location__, name="SIGMA", &
1612 description="Defines the SIGMA parameter of the LJ potential", &
1613 usage="SIGMA {real}", type_of_var=real_t, &
1614 n_var=1, unit_str="angstrom")
1615 CALL section_add_keyword(section, keyword)
1616 CALL keyword_release(keyword)
1617
1618 CALL keyword_create(keyword, __location__, name="RCUT", &
1619 description="Defines the cutoff parameter of the LJ potential", &
1620 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1621 unit_str="angstrom"), &
1622 unit_str="angstrom")
1623 CALL section_add_keyword(section, keyword)
1624 CALL keyword_release(keyword)
1625
1626 CALL keyword_create(keyword, __location__, name="RMIN", &
1627 description="Defines the lower bound of the potential. If not set the range is the"// &
1628 " full range generate by the spline", usage="RMIN {real}", &
1629 type_of_var=real_t, unit_str="angstrom")
1630 CALL section_add_keyword(section, keyword)
1631 CALL keyword_release(keyword)
1632
1633 CALL keyword_create(keyword, __location__, name="RMAX", &
1634 description="Defines the upper bound of the potential. If not set the range is the"// &
1635 " full range generate by the spline", usage="RMAX {real}", &
1636 type_of_var=real_t, unit_str="angstrom")
1637 CALL section_add_keyword(section, keyword)
1638 CALL keyword_release(keyword)
1639
1640 END SUBROUTINE create_lj_section
1641
1642! **************************************************************************************************
1643!> \brief This section specifies the input parameters for Williams potential type
1644!> \param section the section to create
1645!> \author teo
1646! **************************************************************************************************
1647 SUBROUTINE create_williams_section(section)
1648 TYPE(section_type), POINTER :: section
1649
1650 TYPE(keyword_type), POINTER :: keyword
1651
1652 cpassert(.NOT. ASSOCIATED(section))
1653 CALL section_create(section, __location__, name="williams", &
1654 description="This section specifies the input parameters for WILLIAMS potential type. "// &
1655 "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", &
1656 n_keywords=1, n_subsections=0, repeats=.true.)
1657
1658 NULLIFY (keyword)
1659
1660 CALL keyword_create(keyword, __location__, name="ATOMS", &
1661 description="Defines the atomic kind involved in the nonbond potential", &
1662 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1663 n_var=2)
1664 CALL section_add_keyword(section, keyword)
1665 CALL keyword_release(keyword)
1666
1667 CALL keyword_create(keyword, __location__, name="A", &
1668 description="Defines the A parameter of the Williams potential", &
1669 usage="A {real}", type_of_var=real_t, &
1670 n_var=1, unit_str="K_e")
1671 CALL section_add_keyword(section, keyword)
1672 CALL keyword_release(keyword)
1673
1674 CALL keyword_create(keyword, __location__, name="B", &
1675 description="Defines the B parameter of the Williams potential", &
1676 usage="B {real}", type_of_var=real_t, &
1677 n_var=1, unit_str="angstrom^-1")
1678 CALL section_add_keyword(section, keyword)
1679 CALL keyword_release(keyword)
1680
1681 CALL keyword_create(keyword, __location__, name="C", &
1682 description="Defines the C parameter of the Williams potential", &
1683 usage="C {real}", type_of_var=real_t, &
1684 n_var=1, unit_str="K_e*angstrom^6")
1685 CALL section_add_keyword(section, keyword)
1686 CALL keyword_release(keyword)
1687
1688 CALL keyword_create(keyword, __location__, name="RCUT", &
1689 description="Defines the cutoff parameter of the Williams potential", &
1690 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1691 unit_str="angstrom"), &
1692 unit_str="angstrom")
1693 CALL section_add_keyword(section, keyword)
1694 CALL keyword_release(keyword)
1695
1696 CALL keyword_create(keyword, __location__, name="RMIN", &
1697 description="Defines the lower bound of the potential. If not set the range is the"// &
1698 " full range generate by the spline", usage="RMIN {real}", &
1699 type_of_var=real_t, unit_str="angstrom")
1700 CALL section_add_keyword(section, keyword)
1701 CALL keyword_release(keyword)
1702
1703 CALL keyword_create(keyword, __location__, name="RMAX", &
1704 description="Defines the upper bound of the potential. If not set the range is the"// &
1705 " full range generate by the spline", usage="RMAX {real}", &
1706 type_of_var=real_t, unit_str="angstrom")
1707 CALL section_add_keyword(section, keyword)
1708 CALL keyword_release(keyword)
1709
1710 END SUBROUTINE create_williams_section
1711
1712! **************************************************************************************************
1713!> \brief This section specifies the input parameters for Goodwin potential type
1714!> \param section the section to create
1715!> \author teo
1716! **************************************************************************************************
1717 SUBROUTINE create_goodwin_section(section)
1718 TYPE(section_type), POINTER :: section
1719
1720 TYPE(keyword_type), POINTER :: keyword
1721
1722 cpassert(.NOT. ASSOCIATED(section))
1723 CALL section_create(section, __location__, name="goodwin", &
1724 description="This section specifies the input parameters for GOODWIN potential type. "// &
1725 "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", &
1726 n_keywords=1, n_subsections=0, repeats=.true.)
1727
1728 NULLIFY (keyword)
1729 CALL keyword_create(keyword, __location__, name="ATOMS", &
1730 description="Defines the atomic kind involved in the nonbond potential", &
1731 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1732 n_var=2)
1733 CALL section_add_keyword(section, keyword)
1734 CALL keyword_release(keyword)
1735
1736 CALL keyword_create(keyword, __location__, name="VR0", &
1737 description="Defines the VR0 parameter of the Goodwin potential", &
1738 usage="VR0 {real}", type_of_var=real_t, &
1739 n_var=1, unit_str="K_e")
1740 CALL section_add_keyword(section, keyword)
1741 CALL keyword_release(keyword)
1742
1743 CALL keyword_create(keyword, __location__, name="D", &
1744 description="Defines the D parameter of the Goodwin potential", &
1745 usage="D {real}", type_of_var=real_t, &
1746 n_var=1, unit_str="angstrom")
1747 CALL section_add_keyword(section, keyword)
1748 CALL keyword_release(keyword)
1749
1750 CALL keyword_create(keyword, __location__, name="DC", &
1751 description="Defines the DC parameter of the Goodwin potential", &
1752 usage="DC {real}", type_of_var=real_t, &
1753 n_var=1, unit_str="angstrom")
1754 CALL section_add_keyword(section, keyword)
1755 CALL keyword_release(keyword)
1756
1757 CALL keyword_create(keyword, __location__, name="M", &
1758 description="Defines the M parameter of the Goodwin potential", &
1759 usage="M {real}", type_of_var=integer_t, &
1760 n_var=1)
1761 CALL section_add_keyword(section, keyword)
1762 CALL keyword_release(keyword)
1763
1764 CALL keyword_create(keyword, __location__, name="MC", &
1765 description="Defines the MC parameter of the Goodwin potential", &
1766 usage="MC {real}", type_of_var=integer_t, &
1767 n_var=1)
1768 CALL section_add_keyword(section, keyword)
1769 CALL keyword_release(keyword)
1770
1771 CALL keyword_create(keyword, __location__, name="RCUT", &
1772 description="Defines the cutoff parameter of the Goodwin potential", &
1773 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1774 unit_str="angstrom"), &
1775 unit_str="angstrom")
1776 CALL section_add_keyword(section, keyword)
1777 CALL keyword_release(keyword)
1778
1779 CALL keyword_create(keyword, __location__, name="RMIN", &
1780 description="Defines the lower bound of the potential. If not set the range is the"// &
1781 " full range generate by the spline", usage="RMIN {real}", &
1782 type_of_var=real_t, unit_str="angstrom")
1783 CALL section_add_keyword(section, keyword)
1784 CALL keyword_release(keyword)
1785
1786 CALL keyword_create(keyword, __location__, name="RMAX", &
1787 description="Defines the upper bound of the potential. If not set the range is the"// &
1788 " full range generate by the spline", usage="RMAX {real}", &
1789 type_of_var=real_t, unit_str="angstrom")
1790 CALL section_add_keyword(section, keyword)
1791 CALL keyword_release(keyword)
1792
1793 END SUBROUTINE create_goodwin_section
1794
1795! **************************************************************************************************
1796!> \brief This section specifies the input parameters for IPBV potential type
1797!> \param section the section to create
1798!> \author teo
1799! **************************************************************************************************
1800 SUBROUTINE create_ipbv_section(section)
1801 TYPE(section_type), POINTER :: section
1802
1803 TYPE(keyword_type), POINTER :: keyword
1804
1805 cpassert(.NOT. ASSOCIATED(section))
1806 CALL section_create(section, __location__, name="ipbv", &
1807 description="This section specifies the input parameters for IPBV potential type. "// &
1808 "Functional form: Implicit table function.", &
1809 n_keywords=1, n_subsections=0, repeats=.true.)
1810
1811 NULLIFY (keyword)
1812
1813 CALL keyword_create(keyword, __location__, name="ATOMS", &
1814 description="Defines the atomic kind involved in the IPBV nonbond potential", &
1815 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1816 n_var=2)
1817 CALL section_add_keyword(section, keyword)
1818 CALL keyword_release(keyword)
1819
1820 CALL keyword_create(keyword, __location__, name="RCUT", &
1821 description="Defines the cutoff parameter of the IPBV potential", &
1822 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1823 unit_str="angstrom"), &
1824 unit_str="angstrom")
1825 CALL section_add_keyword(section, keyword)
1826 CALL keyword_release(keyword)
1827
1828 CALL keyword_create(keyword, __location__, name="RMIN", &
1829 description="Defines the lower bound of the potential. If not set the range is the"// &
1830 " full range generate by the spline", usage="RMIN {real}", &
1831 type_of_var=real_t, unit_str="angstrom")
1832 CALL section_add_keyword(section, keyword)
1833 CALL keyword_release(keyword)
1834
1835 CALL keyword_create(keyword, __location__, name="RMAX", &
1836 description="Defines the upper bound of the potential. If not set the range is the"// &
1837 " full range generate by the spline", usage="RMAX {real}", &
1838 type_of_var=real_t, unit_str="angstrom")
1839 CALL section_add_keyword(section, keyword)
1840 CALL keyword_release(keyword)
1841
1842 END SUBROUTINE create_ipbv_section
1843
1844! **************************************************************************************************
1845!> \brief This section specifies the input parameters for BMHFT potential type
1846!> \param section the section to create
1847!> \author teo
1848! **************************************************************************************************
1849 SUBROUTINE create_bmhft_section(section)
1850 TYPE(section_type), POINTER :: section
1851
1852 TYPE(keyword_type), POINTER :: keyword
1853
1854 cpassert(.NOT. ASSOCIATED(section))
1855 CALL section_create(section, __location__, name="BMHFT", &
1856 description="This section specifies the input parameters for BMHFT potential type. "// &
1857 "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8. "// &
1858 "Values available inside cp2k only for the Na/Cl pair.", &
1859 citations=[tosi1964a, tosi1964b], n_keywords=1, n_subsections=0, repeats=.true.)
1860
1861 NULLIFY (keyword)
1862
1863 CALL keyword_create(keyword, __location__, name="ATOMS", &
1864 description="Defines the atomic kind involved in the BMHFT nonbond potential", &
1865 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1866 n_var=2)
1867 CALL section_add_keyword(section, keyword)
1868 CALL keyword_release(keyword)
1869
1870 CALL keyword_create(keyword, __location__, name="MAP_ATOMS", &
1871 description="Defines the kinds for which internally is defined the BMHFT nonbond potential"// &
1872 " at the moment only Na and Cl.", &
1873 usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1874 n_var=2)
1875 CALL section_add_keyword(section, keyword)
1876 CALL keyword_release(keyword)
1877
1878 CALL keyword_create(keyword, __location__, name="RCUT", &
1879 description="Defines the cutoff parameter of the BMHFT potential", &
1880 usage="RCUT {real}", default_r_val=7.8_dp, &
1881 unit_str="angstrom")
1882 CALL section_add_keyword(section, keyword)
1883 CALL keyword_release(keyword)
1884
1885 CALL keyword_create(keyword, __location__, name="A", &
1886 description="Defines the A parameter of the Fumi-Tosi Potential", &
1887 usage="A {real}", type_of_var=real_t, &
1888 n_var=1, unit_str="hartree")
1889 CALL section_add_keyword(section, keyword)
1890 CALL keyword_release(keyword)
1891
1892 CALL keyword_create(keyword, __location__, name="B", &
1893 description="Defines the B parameter of the Fumi-Tosi Potential", &
1894 usage="B {real}", type_of_var=real_t, &
1895 n_var=1, unit_str="angstrom^-1")
1896 CALL section_add_keyword(section, keyword)
1897 CALL keyword_release(keyword)
1898
1899 CALL keyword_create(keyword, __location__, name="C", &
1900 description="Defines the C parameter of the Fumi-Tosi Potential", &
1901 usage="C {real}", type_of_var=real_t, &
1902 n_var=1, unit_str="hartree*angstrom^6")
1903 CALL section_add_keyword(section, keyword)
1904 CALL keyword_release(keyword)
1905
1906 CALL keyword_create(keyword, __location__, name="D", &
1907 description="Defines the D parameter of the Fumi-Tosi Potential", &
1908 usage="D {real}", type_of_var=real_t, &
1909 n_var=1, unit_str="hartree*angstrom^8")
1910 CALL section_add_keyword(section, keyword)
1911 CALL keyword_release(keyword)
1912
1913 CALL keyword_create(keyword, __location__, name="RMIN", &
1914 description="Defines the lower bound of the potential. If not set the range is the"// &
1915 " full range generate by the spline", usage="RMIN {real}", &
1916 type_of_var=real_t, unit_str="angstrom")
1917 CALL section_add_keyword(section, keyword)
1918 CALL keyword_release(keyword)
1919
1920 CALL keyword_create(keyword, __location__, name="RMAX", &
1921 description="Defines the upper bound of the potential. If not set the range is the"// &
1922 " full range generate by the spline", usage="RMAX {real}", &
1923 type_of_var=real_t, unit_str="angstrom")
1924 CALL section_add_keyword(section, keyword)
1925 CALL keyword_release(keyword)
1926
1927 END SUBROUTINE create_bmhft_section
1928
1929! **************************************************************************************************
1930!> \brief This section specifies the input parameters for BMHFTD potential type
1931!> \param section the section to create
1932!> \par History
1933!> - Unused input keyword ORDER removed (18.10.2021, MK)
1934!> \author Mathieu Salanne 05.2010
1935! **************************************************************************************************
1936 SUBROUTINE create_bmhftd_section(section)
1937 TYPE(section_type), POINTER :: section
1938
1939 TYPE(keyword_type), POINTER :: keyword
1940
1941 cpassert(.NOT. ASSOCIATED(section))
1942 CALL section_create(section, __location__, name="BMHFTD", &
1943 description="This section specifies the input parameters for the BMHFTD potential type. "// &
1944 "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8 "// &
1945 "where f_order(r) = 1 - exp(-BD*r)*\sum_{k=0}^order (BD*r)^k/k! "// &
1946 "(Tang-Toennies damping function). No pre-defined parameter values are available.", &
1947 citations=[tosi1964a, tosi1964b], n_keywords=1, n_subsections=0, repeats=.true.)
1948
1949 NULLIFY (keyword)
1950
1951 CALL keyword_create(keyword, __location__, name="ATOMS", &
1952 description="Defines the atomic kind involved in the BMHFTD nonbond potential", &
1953 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1954 n_var=2)
1955 CALL section_add_keyword(section, keyword)
1956 CALL keyword_release(keyword)
1957
1958 CALL keyword_create(keyword, __location__, name="MAP_ATOMS", &
1959 description="Defines the kinds for which internally is defined the BMHFTD nonbond potential"// &
1960 " at the moment no species included.", &
1961 usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1962 n_var=2)
1963 CALL section_add_keyword(section, keyword)
1964 CALL keyword_release(keyword)
1965
1966 CALL keyword_create(keyword, __location__, name="RCUT", &
1967 description="Defines the cutoff parameter of the BMHFTD potential", &
1968 usage="RCUT {real}", default_r_val=7.8_dp, &
1969 unit_str="angstrom")
1970 CALL section_add_keyword(section, keyword)
1971 CALL keyword_release(keyword)
1972
1973 CALL keyword_create(keyword, __location__, name="A", &
1974 description="Defines the A parameter of the dispersion-damped Fumi-Tosi potential", &
1975 usage="A {real}", type_of_var=real_t, &
1976 n_var=1, unit_str="hartree")
1977 CALL section_add_keyword(section, keyword)
1978 CALL keyword_release(keyword)
1979
1980 CALL keyword_create(keyword, __location__, name="B", &
1981 description="Defines the B parameter of the dispersion-damped Fumi-Tosi potential", &
1982 usage="B {real}", type_of_var=real_t, &
1983 n_var=1, unit_str="angstrom^-1")
1984 CALL section_add_keyword(section, keyword)
1985 CALL keyword_release(keyword)
1986
1987 CALL keyword_create(keyword, __location__, name="C", &
1988 description="Defines the C parameter of the dispersion-damped Fumi-Tosi potential", &
1989 usage="C {real}", type_of_var=real_t, &
1990 n_var=1, unit_str="hartree*angstrom^6")
1991 CALL section_add_keyword(section, keyword)
1992 CALL keyword_release(keyword)
1993
1994 CALL keyword_create(keyword, __location__, name="D", &
1995 description="Defines the D parameter of the dispersion-damped Fumi-Tosi potential", &
1996 usage="D {real}", type_of_var=real_t, &
1997 n_var=1, unit_str="hartree*angstrom^8")
1998 CALL section_add_keyword(section, keyword)
1999 CALL keyword_release(keyword)
2000
2001 CALL keyword_create(keyword, __location__, name="BD", &
2002 description="Defines the BD parameters of the dispersion-damped Fumi-Tosi potential. "// &
2003 "One or two parameter values are expected. If only one value is provided, then this "// &
2004 "value will be used both for the 6th and the 8th order term.", &
2005 usage="BD {real} {real}", type_of_var=real_t, &
2006 n_var=-1, unit_str="angstrom^-1")
2007 CALL section_add_keyword(section, keyword)
2008 CALL keyword_release(keyword)
2009
2010 CALL keyword_create(keyword, __location__, name="RMIN", &
2011 description="Defines the lower bound of the potential. If not set the range is the"// &
2012 " full range generate by the spline", usage="RMIN {real}", &
2013 type_of_var=real_t, unit_str="angstrom")
2014 CALL section_add_keyword(section, keyword)
2015 CALL keyword_release(keyword)
2016
2017 CALL keyword_create(keyword, __location__, name="RMAX", &
2018 description="Defines the upper bound of the potential. If not set the range is the"// &
2019 " full range generate by the spline", usage="RMAX {real}", &
2020 type_of_var=real_t, unit_str="angstrom")
2021 CALL section_add_keyword(section, keyword)
2022 CALL keyword_release(keyword)
2023
2024 END SUBROUTINE create_bmhftd_section
2025
2026! **************************************************************************************************
2027!> \brief This section specifies the input parameters for Buckingham 4 ranges potential type
2028!> \param section the section to create
2029!> \author MI
2030! **************************************************************************************************
2031 SUBROUTINE create_buck4r_section(section)
2032 TYPE(section_type), POINTER :: section
2033
2034 TYPE(keyword_type), POINTER :: keyword
2035
2036 cpassert(.NOT. ASSOCIATED(section))
2037 CALL section_create(section, __location__, name="BUCK4RANGES", &
2038 description="This section specifies the input parameters for the Buckingham 4-ranges"// &
2039 " potential type."//newline// &
2040 "| Range | Functional Form |"//newline// &
2041 "| ----- | --------------- |"//newline// &
2042 "| $ r < r_1 $ | $ V(r) = A\exp(-Br) $ |"//newline// &
2043 "| $ r_1 \leq r < r_2 $ | $ V(r) = \sum_n \operatorname{POLY1}(n)r_n $ |"//newline// &
2044 "| $ r_2 \leq r < r_3 $ | $ V(r) = \sum_n \operatorname{POLY2}(n)r_n $ |"//newline// &
2045 "| $ r \geq r_3 $ | $ V(r) = -C/r_6 $ |"//newline, &
2046 n_keywords=1, n_subsections=0, repeats=.true.)
2047
2048 NULLIFY (keyword)
2049
2050 CALL keyword_create(keyword, __location__, name="ATOMS", &
2051 description="Defines the atomic kind involved in the nonbond potential", &
2052 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2053 n_var=2)
2054 CALL section_add_keyword(section, keyword)
2055 CALL keyword_release(keyword)
2056
2057 CALL keyword_create(keyword, __location__, name="A", &
2058 description="Defines the A parameter of the Buckingham potential", &
2059 usage="A {real}", type_of_var=real_t, &
2060 n_var=1, unit_str="K_e")
2061 CALL section_add_keyword(section, keyword)
2062 CALL keyword_release(keyword)
2063
2064 CALL keyword_create(keyword, __location__, name="B", &
2065 description="Defines the B parameter of the Buckingham potential", &
2066 usage="B {real}", type_of_var=real_t, &
2067 n_var=1, unit_str="angstrom^-1")
2068 CALL section_add_keyword(section, keyword)
2069 CALL keyword_release(keyword)
2070
2071 CALL keyword_create(keyword, __location__, name="C", &
2072 description="Defines the C parameter of the Buckingham potential", &
2073 usage="C {real}", type_of_var=real_t, &
2074 n_var=1, unit_str="K_e*angstrom^6")
2075 CALL section_add_keyword(section, keyword)
2076 CALL keyword_release(keyword)
2077
2078 CALL keyword_create(keyword, __location__, name="R1", &
2079 description="Defines the upper bound of the first range ", &
2080 usage="R1 {real}", type_of_var=real_t, &
2081 n_var=1, unit_str="angstrom")
2082 CALL section_add_keyword(section, keyword)
2083 CALL keyword_release(keyword)
2084
2085 CALL keyword_create(keyword, __location__, name="R2", &
2086 description="Defines the upper bound of the second range ", &
2087 usage="R2 {real}", type_of_var=real_t, &
2088 n_var=1, unit_str="angstrom")
2089 CALL section_add_keyword(section, keyword)
2090 CALL keyword_release(keyword)
2091
2092 CALL keyword_create(keyword, __location__, name="R3", &
2093 description="Defines the upper bound of the third range ", &
2094 usage="R3 {real}", type_of_var=real_t, &
2095 n_var=1, unit_str="angstrom")
2096 CALL section_add_keyword(section, keyword)
2097 CALL keyword_release(keyword)
2098
2099 CALL keyword_create(keyword, __location__, name="POLY1", &
2100 description="Coefficients of the polynomial used in the second range "// &
2101 "This keyword can be repeated several times.", &
2102 usage="POLY1 C1 C2 C3 ..", &
2103 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.true.)
2104 CALL section_add_keyword(section, keyword)
2105 CALL keyword_release(keyword)
2106
2107 CALL keyword_create(keyword, __location__, name="POLY2", &
2108 description="Coefficients of the polynomial used in the third range "// &
2109 "This keyword can be repeated several times.", &
2110 usage="POLY2 C1 C2 C3 ..", &
2111 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.true.)
2112 CALL section_add_keyword(section, keyword)
2113 CALL keyword_release(keyword)
2114
2115 CALL keyword_create(keyword, __location__, name="RCUT", &
2116 description="Defines the cutoff parameter of the Buckingham potential", &
2117 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2118 unit_str="angstrom"), &
2119 unit_str="angstrom")
2120 CALL section_add_keyword(section, keyword)
2121 CALL keyword_release(keyword)
2122
2123 CALL keyword_create(keyword, __location__, name="RMIN", &
2124 description="Defines the lower bound of the potential. If not set the range is the"// &
2125 " full range generate by the spline", usage="RMIN {real}", &
2126 type_of_var=real_t, unit_str="angstrom")
2127 CALL section_add_keyword(section, keyword)
2128 CALL keyword_release(keyword)
2129
2130 CALL keyword_create(keyword, __location__, name="RMAX", &
2131 description="Defines the upper bound of the potential. If not set the range is the"// &
2132 " full range generate by the spline", usage="RMAX {real}", &
2133 type_of_var=real_t, unit_str="angstrom")
2134 CALL section_add_keyword(section, keyword)
2135 CALL keyword_release(keyword)
2136
2137 END SUBROUTINE create_buck4r_section
2138
2139! **************************************************************************************************
2140!> \brief This section specifies the input parameters for Buckingham + Morse potential type
2141!> \param section the section to create
2142!> \author MI
2143! **************************************************************************************************
2144 SUBROUTINE create_buckmorse_section(section)
2145 TYPE(section_type), POINTER :: section
2146
2147 TYPE(keyword_type), POINTER :: keyword
2148
2149 cpassert(.NOT. ASSOCIATED(section))
2150 CALL section_create( &
2151 section, __location__, name="BUCKMORSE", &
2152 description="This section specifies the input parameters for"// &
2153 " Buckingham plus Morse potential type"// &
2154 " 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)]}.", &
2155 citations=[yamada2000], n_keywords=1, n_subsections=0, repeats=.true.)
2156
2157 NULLIFY (keyword)
2158
2159 CALL keyword_create(keyword, __location__, name="ATOMS", &
2160 description="Defines the atomic kind involved in the nonbond potential", &
2161 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2162 n_var=2)
2163 CALL section_add_keyword(section, keyword)
2164 CALL keyword_release(keyword)
2165
2166 CALL keyword_create(keyword, __location__, name="F0", &
2167 description="Defines the f0 parameter of Buckingham+Morse potential", &
2168 usage="F0 {real}", type_of_var=real_t, &
2169 n_var=1, unit_str="K_e*angstrom^-1")
2170 CALL section_add_keyword(section, keyword)
2171 CALL keyword_release(keyword)
2172
2173 CALL keyword_create(keyword, __location__, name="A1", &
2174 description="Defines the A1 parameter of Buckingham+Morse potential", &
2175 usage="A1 {real}", type_of_var=real_t, &
2176 n_var=1, unit_str="angstrom")
2177 CALL section_add_keyword(section, keyword)
2178 CALL keyword_release(keyword)
2179
2180 CALL keyword_create(keyword, __location__, name="A2", &
2181 description="Defines the A2 parameter of Buckingham+Morse potential", &
2182 usage="A2 {real}", type_of_var=real_t, &
2183 n_var=1, unit_str="angstrom")
2184 CALL section_add_keyword(section, keyword)
2185 CALL keyword_release(keyword)
2186
2187 CALL keyword_create(keyword, __location__, name="B1", &
2188 description="Defines the B1 parameter of Buckingham+Morse potential", &
2189 usage="B1 {real}", type_of_var=real_t, &
2190 n_var=1, unit_str="angstrom")
2191 CALL section_add_keyword(section, keyword)
2192 CALL keyword_release(keyword)
2193
2194 CALL keyword_create(keyword, __location__, name="B2", &
2195 description="Defines the B2 parameter of Buckingham+Morse potential", &
2196 usage="B2 {real}", type_of_var=real_t, &
2197 n_var=1, unit_str="angstrom")
2198 CALL section_add_keyword(section, keyword)
2199 CALL keyword_release(keyword)
2200
2201 CALL keyword_create(keyword, __location__, name="C", &
2202 description="Defines the C parameter of Buckingham+Morse potential", &
2203 usage="C {real}", type_of_var=real_t, &
2204 n_var=1, unit_str="K_e*angstrom^6")
2205 CALL section_add_keyword(section, keyword)
2206 CALL keyword_release(keyword)
2207
2208 CALL keyword_create(keyword, __location__, name="D", &
2209 description="Defines the amplitude for the Morse part ", &
2210 usage="D {real}", type_of_var=real_t, &
2211 n_var=1, unit_str="K_e")
2212 CALL section_add_keyword(section, keyword)
2213 CALL keyword_release(keyword)
2214
2215 CALL keyword_create(keyword, __location__, name="R0", &
2216 description="Defines the equilibrium distance for the Morse part ", &
2217 usage="R0 {real}", type_of_var=real_t, &
2218 n_var=1, unit_str="angstrom")
2219 CALL section_add_keyword(section, keyword)
2220 CALL keyword_release(keyword)
2221
2222 CALL keyword_create(keyword, __location__, name="Beta", &
2223 description="Defines the width for the Morse part ", &
2224 usage="Beta {real}", type_of_var=real_t, &
2225 n_var=1, unit_str="angstrom^-1")
2226 CALL section_add_keyword(section, keyword)
2227 CALL keyword_release(keyword)
2228
2229 CALL keyword_create(keyword, __location__, name="RCUT", &
2230 description="Defines the cutoff parameter of the Buckingham potential", &
2231 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2232 unit_str="angstrom"), &
2233 unit_str="angstrom")
2234 CALL section_add_keyword(section, keyword)
2235 CALL keyword_release(keyword)
2236
2237 CALL keyword_create(keyword, __location__, name="RMIN", &
2238 description="Defines the lower bound of the potential. If not set the range is the"// &
2239 " full range generate by the spline", usage="RMIN {real}", &
2240 type_of_var=real_t, unit_str="angstrom")
2241 CALL section_add_keyword(section, keyword)
2242 CALL keyword_release(keyword)
2243
2244 CALL keyword_create(keyword, __location__, name="RMAX", &
2245 description="Defines the upper bound of the potential. If not set the range is the"// &
2246 " full range generate by the spline", usage="RMAX {real}", &
2247 type_of_var=real_t, unit_str="angstrom")
2248 CALL section_add_keyword(section, keyword)
2249 CALL keyword_release(keyword)
2250
2251 END SUBROUTINE create_buckmorse_section
2252
2253! **************************************************************************************************
2254!> \brief This section specifies the input parameters for Tersoff potential type
2255!> (Tersoff, J. PRB 39(8), 5566, 1989)
2256!> \param section ...
2257! **************************************************************************************************
2258 SUBROUTINE create_tersoff_section(section)
2259 TYPE(section_type), POINTER :: section
2260
2261 TYPE(keyword_type), POINTER :: keyword
2262
2263 cpassert(.NOT. ASSOCIATED(section))
2264 CALL section_create(section, __location__, name="TERSOFF", &
2265 description="This section specifies the input parameters for Tersoff potential type.", &
2266 citations=[tersoff1988], n_keywords=1, n_subsections=0, repeats=.true.)
2267
2268 NULLIFY (keyword)
2269
2270 CALL keyword_create(keyword, __location__, name="ATOMS", &
2271 description="Defines the atomic kind involved in the nonbond potential", &
2272 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2273 n_var=2)
2274 CALL section_add_keyword(section, keyword)
2275 CALL keyword_release(keyword)
2276
2277 CALL keyword_create(keyword, __location__, name="A", &
2278 description="Defines the A parameter of Tersoff potential", &
2279 usage="A {real}", type_of_var=real_t, &
2280 default_r_val=cp_unit_to_cp2k(value=1.8308e3_dp, &
2281 unit_str="eV"), &
2282 n_var=1, unit_str="eV")
2283 CALL section_add_keyword(section, keyword)
2284 CALL keyword_release(keyword)
2285
2286 CALL keyword_create(keyword, __location__, name="B", &
2287 description="Defines the B parameter of Tersoff potential", &
2288 usage="B {real}", type_of_var=real_t, &
2289 default_r_val=cp_unit_to_cp2k(value=4.7118e2_dp, &
2290 unit_str="eV"), &
2291 n_var=1, unit_str="eV")
2292 CALL section_add_keyword(section, keyword)
2293 CALL keyword_release(keyword)
2294
2295 CALL keyword_create(keyword, __location__, name="lambda1", &
2296 description="Defines the lambda1 parameter of Tersoff potential", &
2297 usage="lambda1 {real}", type_of_var=real_t, &
2298 default_r_val=cp_unit_to_cp2k(value=2.4799_dp, &
2299 unit_str="angstrom^-1"), &
2300 n_var=1, unit_str="angstrom^-1")
2301 CALL section_add_keyword(section, keyword)
2302 CALL keyword_release(keyword)
2303
2304 CALL keyword_create(keyword, __location__, name="lambda2", &
2305 description="Defines the lambda2 parameter of Tersoff potential", &
2306 usage="lambda2 {real}", type_of_var=real_t, &
2307 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2308 unit_str="angstrom^-1"), &
2309 n_var=1, unit_str="angstrom^-1")
2310 CALL section_add_keyword(section, keyword)
2311 CALL keyword_release(keyword)
2312
2313 CALL keyword_create(keyword, __location__, name="alpha", &
2314 description="Defines the alpha parameter of Tersoff potential", &
2315 usage="alpha {real}", type_of_var=real_t, &
2316 default_r_val=0.0_dp, &
2317 n_var=1)
2318 CALL section_add_keyword(section, keyword)
2319 CALL keyword_release(keyword)
2320
2321 CALL keyword_create(keyword, __location__, name="beta", &
2322 description="Defines the beta parameter of Tersoff potential", &
2323 usage="beta {real}", type_of_var=real_t, &
2324 default_r_val=1.0999e-6_dp, &
2325 n_var=1, unit_str="")
2326 CALL section_add_keyword(section, keyword)
2327 CALL keyword_release(keyword)
2328
2329 CALL keyword_create(keyword, __location__, name="n", &
2330 description="Defines the n parameter of Tersoff potential", &
2331 usage="n {real}", type_of_var=real_t, &
2332 default_r_val=7.8734e-1_dp, &
2333 n_var=1, unit_str="")
2334 CALL section_add_keyword(section, keyword)
2335 CALL keyword_release(keyword)
2336
2337 CALL keyword_create(keyword, __location__, name="c", &
2338 description="Defines the c parameter of Tersoff potential", &
2339 usage="c {real}", type_of_var=real_t, &
2340 default_r_val=1.0039e5_dp, &
2341 n_var=1, unit_str="")
2342 CALL section_add_keyword(section, keyword)
2343 CALL keyword_release(keyword)
2344
2345 CALL keyword_create(keyword, __location__, name="d", &
2346 description="Defines the d parameter of Tersoff potential", &
2347 usage="d {real}", type_of_var=real_t, &
2348 default_r_val=1.6218e1_dp, &
2349 n_var=1, unit_str="")
2350 CALL section_add_keyword(section, keyword)
2351 CALL keyword_release(keyword)
2352
2353 CALL keyword_create(keyword, __location__, name="h", &
2354 description="Defines the h parameter of Tersoff potential", &
2355 usage="h {real}", type_of_var=real_t, &
2356 default_r_val=-5.9826e-1_dp, &
2357 n_var=1, unit_str="")
2358 CALL section_add_keyword(section, keyword)
2359 CALL keyword_release(keyword)
2360
2361 CALL keyword_create(keyword, __location__, name="lambda3", &
2362 description="Defines the lambda3 parameter of Tersoff potential", &
2363 usage="lambda3 {real}", type_of_var=real_t, &
2364 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2365 unit_str="angstrom^-1"), &
2366 n_var=1, unit_str="angstrom^-1")
2367 CALL section_add_keyword(section, keyword)
2368 CALL keyword_release(keyword)
2369
2370 CALL keyword_create(keyword, __location__, name="bigR", &
2371 description="Defines the bigR parameter of Tersoff potential", &
2372 usage="bigR {real}", type_of_var=real_t, &
2373 default_r_val=cp_unit_to_cp2k(value=2.85_dp, &
2374 unit_str="angstrom"), &
2375 n_var=1, unit_str="angstrom")
2376 CALL section_add_keyword(section, keyword)
2377 CALL keyword_release(keyword)
2378
2379 CALL keyword_create(keyword, __location__, name="bigD", &
2380 description="Defines the D parameter of Tersoff potential", &
2381 usage="bigD {real}", type_of_var=real_t, &
2382 default_r_val=cp_unit_to_cp2k(value=0.15_dp, &
2383 unit_str="angstrom"), &
2384 n_var=1, unit_str="angstrom")
2385 CALL section_add_keyword(section, keyword)
2386 CALL keyword_release(keyword)
2387
2388 CALL keyword_create(keyword, __location__, name="RCUT", &
2389 description="Defines the cutoff parameter of the tersoff potential."// &
2390 " This parameter is in principle already defined by the values of"// &
2391 " bigD and bigR. But it is necessary to define it when using the tersoff"// &
2392 " in conjunction with other potentials (for the same atomic pair) in order to have"// &
2393 " the same consistent definition of RCUT for all potentials.", &
2394 usage="RCUT {real}", type_of_var=real_t, &
2395 n_var=1, unit_str="angstrom")
2396 CALL section_add_keyword(section, keyword)
2397 CALL keyword_release(keyword)
2398
2399 END SUBROUTINE create_tersoff_section
2400
2401! **************************************************************************************************
2402!> \brief This section specifies the input parameters for Siepmann-Sprik
2403!> potential type
2404!> (Siepmann and Sprik, J. Chem. Phys. 102(1) 511, 1995)
2405!> \param section ...
2406! **************************************************************************************************
2407 SUBROUTINE create_siepmann_section(section)
2408 TYPE(section_type), POINTER :: section
2409
2410 TYPE(keyword_type), POINTER :: keyword
2411
2412 cpassert(.NOT. ASSOCIATED(section))
2413 CALL section_create(section, __location__, name="SIEPMANN", &
2414 description="This section specifies the input parameters for the"// &
2415 " Siepmann-Sprik potential type. Consists of 4 terms:"// &
2416 " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// &
2417 " have to be given via the GENPOT section. The terms T3+T4"// &
2418 " are obtained from the SIEPMANN section. The Siepmann-Sprik"// &
2419 " potential is designed for water-metal chemisorption.", &
2420 citations=[siepmann1995], n_keywords=1, n_subsections=0, repeats=.true.)
2421
2422 NULLIFY (keyword)
2423
2424 CALL keyword_create(keyword, __location__, name="ATOMS", &
2425 description="Defines the atomic kind involved in the nonbond potential", &
2426 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2427 n_var=2)
2428 CALL section_add_keyword(section, keyword)
2429 CALL keyword_release(keyword)
2430
2431 CALL keyword_create(keyword, __location__, name="B", &
2432 description="Defines the B parameter of Siepmann potential", &
2433 usage="B {real}", type_of_var=real_t, &
2434 default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2435 unit_str="angstrom"), &
2436 n_var=1, unit_str="angstrom")
2437 CALL section_add_keyword(section, keyword)
2438 CALL keyword_release(keyword)
2439
2440 CALL keyword_create(keyword, __location__, name="D", &
2441 description="Defines the D parameter of Siepmann potential", &
2442 usage="D {real}", type_of_var=real_t, &
2443 default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2444 unit_str="internal_cp2k"), &
2445 n_var=1, unit_str="internal_cp2k")
2446 CALL section_add_keyword(section, keyword)
2447 CALL keyword_release(keyword)
2448
2449 CALL keyword_create(keyword, __location__, name="E", &
2450 description="Defines the E parameter of Siepmann potential", &
2451 usage="E {real}", type_of_var=real_t, &
2452 default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2453 unit_str="internal_cp2k"), &
2454 n_var=1, unit_str="internal_cp2k")
2455 CALL section_add_keyword(section, keyword)
2456 CALL keyword_release(keyword)
2457
2458 CALL keyword_create(keyword, __location__, name="F", &
2459 description="Defines the F parameter of Siepmann potential", &
2460 usage="F {real}", type_of_var=real_t, &
2461 default_r_val=13.3_dp, n_var=1)
2462 CALL section_add_keyword(section, keyword)
2463 CALL keyword_release(keyword)
2464!
2465 CALL keyword_create(keyword, __location__, name="beta", &
2466 description="Defines the beta parameter of Siepmann potential", &
2467 usage="beta {real}", type_of_var=real_t, &
2468 default_r_val=10.0_dp, n_var=1)
2469 CALL section_add_keyword(section, keyword)
2470 CALL keyword_release(keyword)
2471!
2472 CALL keyword_create(keyword, __location__, name="RCUT", &
2473 description="Defines the cutoff parameter of Siepmann potential", &
2474 usage="RCUT {real}", type_of_var=real_t, &
2475 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2476 unit_str="angstrom"), &
2477 n_var=1, unit_str="angstrom")
2478 CALL section_add_keyword(section, keyword)
2479 CALL keyword_release(keyword)
2480!
2481 CALL keyword_create(keyword, __location__, name="ALLOW_OH_FORMATION", &
2482 description=" The Siepmann-Sprik potential is actually designed for intact"// &
2483 " water molecules only. If water is treated at the QM level,"// &
2484 " water molecules can potentially dissociate, i.e."// &
2485 " some O-H bonds might be stretched leading temporarily"// &
2486 " to the formation of OH- ions. This keyword allows the"// &
2487 " the formation of such ions. The T3 term (dipole term)"// &
2488 " is then switched off for evaluating the interaction"// &
2489 " between the OH- ion and the metal.", &
2490 usage="ALLOW_OH_FORMATION TRUE", &
2491 default_l_val=.false., lone_keyword_l_val=.true.)
2492 CALL section_add_keyword(section, keyword)
2493 CALL keyword_release(keyword)
2494
2495 CALL keyword_create(keyword, __location__, name="ALLOW_H3O_FORMATION", &
2496 description=" The Siepmann-Sprik potential is designed for intact water"// &
2497 " molecules only. If water is treated at the QM level"// &
2498 " and an acid is present, hydronium ions might occur."// &
2499 " This keyword allows the formation of hydronium ions."// &
2500 " The T3 term (dipole term) is switched off for evaluating"// &
2501 " the interaction between hydronium and the metal.", &
2502 usage="ALLOW_H3O_FORMATION TRUE", &
2503 default_l_val=.false., lone_keyword_l_val=.true.)
2504 CALL section_add_keyword(section, keyword)
2505 CALL keyword_release(keyword)
2506
2507 CALL keyword_create(keyword, __location__, name="ALLOW_O_FORMATION", &
2508 description=" The Siepmann-Sprik potential is actually designed for intact"// &
2509 " water molecules only. If water is treated at the QM level,"// &
2510 " water molecules can potentially dissociate, i.e."// &
2511 " some O-H bonds might be stretched leading temporarily"// &
2512 " to the formation of O^2- ions. This keyword allows the"// &
2513 " the formation of such ions. The T3 term (dipole term)"// &
2514 " is then switched off for evaluating the interaction"// &
2515 " between the O^2- ion and the metal.", &
2516 usage="ALLOW_O_FORMATION .TRUE.", &
2517 default_l_val=.false., lone_keyword_l_val=.true.)
2518 CALL section_add_keyword(section, keyword)
2519 CALL keyword_release(keyword)
2520
2521 END SUBROUTINE create_siepmann_section
2522
2523! **************************************************************************************************
2524!> \brief This section specifies the input parameters for GAL19
2525!> potential type
2526!> (??)
2527!> \param section ...
2528! **************************************************************************************************
2529 SUBROUTINE create_gal_section(section)
2530 TYPE(section_type), POINTER :: section
2531
2532 TYPE(keyword_type), POINTER :: keyword
2533 TYPE(section_type), POINTER :: subsection
2534
2535 cpassert(.NOT. ASSOCIATED(section))
2536 CALL section_create(section, __location__, name="GAL19", &
2537 description="Implementation of the GAL19 forcefield, see associated paper", &
2538 citations=[clabaut2020], n_keywords=1, n_subsections=1, repeats=.true.)
2539
2540 NULLIFY (keyword, subsection)
2541
2542 CALL keyword_create(keyword, __location__, name="ATOMS", &
2543 description="Defines the atomic kind involved in the nonbond potential", &
2544 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2545 n_var=2)
2546 CALL section_add_keyword(section, keyword)
2547 CALL keyword_release(keyword)
2548
2549 CALL keyword_create(keyword, __location__, name="METALS", &
2550 description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2551 usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2552 n_var=2)
2553 CALL section_add_keyword(section, keyword)
2554 CALL keyword_release(keyword)
2555
2556 CALL keyword_create(keyword, __location__, name="epsilon", &
2557 description="Defines the epsilon_a parameter of GAL19 potential", &
2558 usage="epsilon {real}", type_of_var=real_t, &
2559 default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2560 unit_str="kcalmol"), &
2561 n_var=1, unit_str="kcalmol")
2562 CALL section_add_keyword(section, keyword)
2563 CALL keyword_release(keyword)
2564
2565 CALL keyword_create(keyword, __location__, name="bxy", &
2566 description="Defines the b perpendicular parameter of GAL19 potential", &
2567 usage="bxy {real}", type_of_var=real_t, &
2568 default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2569 unit_str="internal_cp2k"), &
2570 n_var=1, unit_str="angstrom^-2")
2571 CALL section_add_keyword(section, keyword)
2572 CALL keyword_release(keyword)
2573
2574 CALL keyword_create(keyword, __location__, name="bz", &
2575 description="Defines the b parallel parameter of GAL19 potential", &
2576 usage="bz {real}", type_of_var=real_t, &
2577 default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2578 unit_str="internal_cp2k"), &
2579 n_var=1, unit_str="angstrom^-2")
2580 CALL section_add_keyword(section, keyword)
2581 CALL keyword_release(keyword)
2582
2583 CALL keyword_create(keyword, __location__, name="r", &
2584 description="Defines the R_0 parameters of GAL19 potential for the two METALS. "// &
2585 "This is the only parameter that is shared between the two section of the "// &
2586 "forcefield in the case of two metals (alloy). "// &
2587 "If one metal only is present, a second number should be given but won't be read", &
2588 usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2589 CALL section_add_keyword(section, keyword)
2590 CALL keyword_release(keyword)
2591
2592 CALL keyword_create(keyword, __location__, name="a1", &
2593 description="Defines the a1 parameter of GAL19 potential", &
2594 usage="a1 {real}", type_of_var=real_t, &
2595 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2596 CALL section_add_keyword(section, keyword)
2597 CALL keyword_release(keyword)
2598
2599 CALL keyword_create(keyword, __location__, name="a2", &
2600 description="Defines the a2 parameter of GAL19 potential", &
2601 usage="a2 {real}", type_of_var=real_t, &
2602 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2603 CALL section_add_keyword(section, keyword)
2604 CALL keyword_release(keyword)
2605
2606 CALL keyword_create(keyword, __location__, name="a3", &
2607 description="Defines the a3 parameter of GAL19 potential", &
2608 usage="a3 {real}", type_of_var=real_t, &
2609 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2610 CALL section_add_keyword(section, keyword)
2611 CALL keyword_release(keyword)
2612
2613 CALL keyword_create(keyword, __location__, name="a4", &
2614 description="Defines the a4 parameter of GAL19 potential", &
2615 usage="a4 {real}", type_of_var=real_t, &
2616 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2617 CALL section_add_keyword(section, keyword)
2618 CALL keyword_release(keyword)
2619
2620 CALL keyword_create(keyword, __location__, name="A", &
2621 description="Defines the A parameter of GAL19 potential", &
2622 usage="A {real}", type_of_var=real_t, &
2623 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2624 CALL section_add_keyword(section, keyword)
2625 CALL keyword_release(keyword)
2626
2627 CALL keyword_create(keyword, __location__, name="B", &
2628 description="Defines the B parameter of GAL19 potential", &
2629 usage="B {real}", type_of_var=real_t, &
2630 default_r_val=10.0_dp, n_var=1, unit_str="angstrom^-1")
2631 CALL section_add_keyword(section, keyword)
2632 CALL keyword_release(keyword)
2633
2634 CALL keyword_create(keyword, __location__, name="C", &
2635 description="Defines the C parameter of GAL19 potential", &
2636 usage="C {real}", type_of_var=real_t, &
2637 default_r_val=10.0_dp, n_var=1, unit_str="angstrom^6*kcalmol")
2638 CALL section_add_keyword(section, keyword)
2639 CALL keyword_release(keyword)
2640
2641 CALL keyword_create(keyword, __location__, name="RCUT", &
2642 description="Defines the cutoff parameter of GAL19 potential", &
2643 usage="RCUT {real}", type_of_var=real_t, &
2644 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2645 unit_str="angstrom"), &
2646 n_var=1, unit_str="angstrom")
2647 CALL section_add_keyword(section, keyword)
2648 CALL keyword_release(keyword)
2649 CALL keyword_create(keyword, __location__, name="Fit_express", &
2650 description="Demands the particular output needed to a least square fit", &
2651 usage="Fit_express TRUE", &
2652 default_l_val=.false., lone_keyword_l_val=.true.)
2653 CALL section_add_keyword(section, keyword)
2654 CALL keyword_release(keyword)
2655 CALL create_gcn_section(subsection)
2656 CALL section_add_subsection(section, subsection)
2657 CALL section_release(subsection)
2658
2659 END SUBROUTINE create_gal_section
2660
2661! **************************************************************************************************
2662!> \brief This section specifies the input parameters for GAL21
2663!> potential type
2664!> (??)
2665!> \param section ...
2666! **************************************************************************************************
2667 SUBROUTINE create_gal21_section(section)
2668 TYPE(section_type), POINTER :: section
2669
2670 TYPE(keyword_type), POINTER :: keyword
2671 TYPE(section_type), POINTER :: subsection
2672
2673 cpassert(.NOT. ASSOCIATED(section))
2674 CALL section_create(section, __location__, name="GAL21", &
2675 description="Implementation of the GAL21 forcefield, see associated paper", &
2676 citations=[clabaut2021], n_keywords=1, n_subsections=1, repeats=.true.)
2677
2678 NULLIFY (keyword, subsection)
2679
2680 CALL keyword_create(keyword, __location__, name="ATOMS", &
2681 description="Defines the atomic kind involved in the nonbond potential", &
2682 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2683 n_var=2)
2684 CALL section_add_keyword(section, keyword)
2685 CALL keyword_release(keyword)
2686
2687 CALL keyword_create(keyword, __location__, name="METALS", &
2688 description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2689 usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2690 n_var=2)
2691 CALL section_add_keyword(section, keyword)
2692 CALL keyword_release(keyword)
2693
2694 CALL keyword_create(keyword, __location__, name="epsilon", &
2695 description="Defines the epsilon parameter of GAL21 potential", &
2696 usage="epsilon {real} {real} {real}", type_of_var=real_t, &
2697 n_var=3, unit_str="kcalmol")
2698 CALL section_add_keyword(section, keyword)
2699 CALL keyword_release(keyword)
2700
2701 CALL keyword_create(keyword, __location__, name="bxy", &
2702 description="Defines the b perpendicular parameter of GAL21 potential", &
2703 usage="bxy {real} {real}", type_of_var=real_t, &
2704 n_var=2, unit_str="angstrom^-2")
2705 CALL section_add_keyword(section, keyword)
2706 CALL keyword_release(keyword)
2707
2708 CALL keyword_create(keyword, __location__, name="bz", &
2709 description="Defines the b parallel parameter of GAL21 potential", &
2710 usage="bz {real} {real}", type_of_var=real_t, &
2711 n_var=2, unit_str="angstrom^-2")
2712 CALL section_add_keyword(section, keyword)
2713 CALL keyword_release(keyword)
2714
2715 CALL keyword_create(keyword, __location__, name="r", &
2716 description="Defines the R_0 parameters of GAL21 potential for the two METALS. "// &
2717 "This is the only parameter that is shared between the two section of "// &
2718 "the forcefield in the case of two metals (alloy). "// &
2719 "If one metal only is present, a second number should be given but won't be read", &
2720 usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2721 CALL section_add_keyword(section, keyword)
2722 CALL keyword_release(keyword)
2723
2724 CALL keyword_create(keyword, __location__, name="a1", &
2725 description="Defines the a1 parameter of GAL21 potential", &
2726 usage="a1 {real} {real} {real}", type_of_var=real_t, &
2727 n_var=3, unit_str="kcalmol")
2728 CALL section_add_keyword(section, keyword)
2729 CALL keyword_release(keyword)
2730
2731 CALL keyword_create(keyword, __location__, name="a2", &
2732 description="Defines the a2 parameter of GAL21 potential", &
2733 usage="a2 {real} {real} {real}", type_of_var=real_t, &
2734 n_var=3, unit_str="kcalmol")
2735 CALL section_add_keyword(section, keyword)
2736 CALL keyword_release(keyword)
2737
2738 CALL keyword_create(keyword, __location__, name="a3", &
2739 description="Defines the a3 parameter of GAL21 potential", &
2740 usage="a3 {real} {real} {real}", type_of_var=real_t, &
2741 n_var=3, unit_str="kcalmol")
2742 CALL section_add_keyword(section, keyword)
2743 CALL keyword_release(keyword)
2744
2745 CALL keyword_create(keyword, __location__, name="a4", &
2746 description="Defines the a4 parameter of GAL21 potential", &
2747 usage="a4 {real} {real} {real}", type_of_var=real_t, &
2748 n_var=3, unit_str="kcalmol")
2749 CALL section_add_keyword(section, keyword)
2750 CALL keyword_release(keyword)
2751
2752 CALL keyword_create(keyword, __location__, name="A", &
2753 description="Defines the A parameter of GAL21 potential", &
2754 usage="A {real} {real}", type_of_var=real_t, &
2755 n_var=2, unit_str="kcalmol")
2756 CALL section_add_keyword(section, keyword)
2757 CALL keyword_release(keyword)
2758
2759 CALL keyword_create(keyword, __location__, name="B", &
2760 description="Defines the B parameter of GAL21 potential", &
2761 usage="B {real} {real}", type_of_var=real_t, &
2762 n_var=2, unit_str="angstrom^-1")
2763 CALL section_add_keyword(section, keyword)
2764 CALL keyword_release(keyword)
2765
2766 CALL keyword_create(keyword, __location__, name="C", &
2767 description="Defines the C parameter of GAL21 potential", &
2768 usage="C {real}", type_of_var=real_t, &
2769 n_var=1, unit_str="angstrom^6*kcalmol")
2770 CALL section_add_keyword(section, keyword)
2771 CALL keyword_release(keyword)
2772
2773 CALL keyword_create(keyword, __location__, name="AH", &
2774 description="Defines the AH parameter of GAL21 potential", &
2775 usage="AH {real} {real}", type_of_var=real_t, &
2776 n_var=2, unit_str="kcalmol")
2777 CALL section_add_keyword(section, keyword)
2778 CALL keyword_release(keyword)
2779
2780 CALL keyword_create(keyword, __location__, name="BH", &
2781 description="Defines the BH parameter of GAL21 potential", &
2782 usage="BH {real} {real}", type_of_var=real_t, &
2783 n_var=2, unit_str="angstrom^-1")
2784 CALL section_add_keyword(section, keyword)
2785 CALL keyword_release(keyword)
2786
2787 CALL keyword_create(keyword, __location__, name="RCUT", &
2788 description="Defines the cutoff parameter of GAL21 potential", &
2789 usage="RCUT {real}", type_of_var=real_t, &
2790 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2791 unit_str="angstrom"), &
2792 n_var=1, unit_str="angstrom")
2793 CALL section_add_keyword(section, keyword)
2794 CALL keyword_release(keyword)
2795
2796 CALL keyword_create(keyword, __location__, name="Fit_express", &
2797 description="Demands the particular output needed to a least square fit", &
2798 usage="Fit_express TRUE", &
2799 default_l_val=.false., lone_keyword_l_val=.true.)
2800 CALL section_add_keyword(section, keyword)
2801 CALL keyword_release(keyword)
2802
2803 CALL create_gcn_section(subsection)
2804 CALL section_add_subsection(section, subsection)
2805 CALL section_release(subsection)
2806
2807 END SUBROUTINE create_gal21_section
2808
2809! **************************************************************************************************
2810!> \brief This section specifies the input parameters for TABPOT potential type
2811!> \param section the section to create
2812!> \author teo, Alex Mironenko, Da Teng
2813! **************************************************************************************************
2814 SUBROUTINE create_tabpot_section(section)
2815
2816 TYPE(section_type), POINTER :: section
2817
2818 TYPE(keyword_type), POINTER :: keyword
2819
2820 cpassert(.NOT. ASSOCIATED(section))
2821
2822 CALL section_create(section, __location__, name="TABPOT", &
2823 description="This section specifies the input parameters for TABPOT potential type.", &
2824 n_keywords=1, n_subsections=0, repeats=.true.)
2825
2826 NULLIFY (keyword)
2827 CALL keyword_create(keyword, __location__, name="ATOMS", &
2828 description="Defines the atomic kind involved", &
2829 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2830 n_var=2)
2831 CALL section_add_keyword(section, keyword)
2832 CALL keyword_release(keyword)
2833
2834 CALL keyword_create(keyword, __location__, name="PARM_FILE_NAME", &
2835 variants=["PARMFILE"], &
2836 description="Specifies the filename that contains the tabulated NONBONDED potential. "// &
2837 "File structure: the third line of the potential file contains a title. "// &
2838 "The 4th line contains: 'N', number of data points, 'R', lower bound of distance, distance cutoff. "// &
2839 "Follow "// &
2840 "in order npoints lines for index, distance [A], energy [kcal/mol], and force [kcal/mol/A]", &
2841 usage="PARM_FILE_NAME {FILENAME}", default_lc_val="")
2842 CALL section_add_keyword(section, keyword)
2843 CALL keyword_release(keyword)
2844
2845 END SUBROUTINE create_tabpot_section
2846
2847! **************************************************************************************************
2848!> \brief This section specifies the input parameters for the subsection GCN of GAL19 and GAL21
2849!> potential type
2850!> (??)
2851!> \param section ...
2852! **************************************************************************************************
2853 SUBROUTINE create_gcn_section(section)
2854 TYPE(section_type), POINTER :: section
2855
2856 TYPE(keyword_type), POINTER :: keyword
2857
2858 cpassert(.NOT. ASSOCIATED(section))
2859 CALL section_create(section, __location__, name="GCN", &
2860 description="Allow to specify the generalized coordination number of the atoms. "// &
2861 "Those numbers msust be generated by another program ", &
2862 n_keywords=1, n_subsections=0, repeats=.false.)
2863
2864 NULLIFY (keyword)
2865 CALL keyword_create(keyword, __location__, name="_DEFAULT_KEYWORD_", &
2866 description="Value of the GCN for the individual atom. Order MUST reflect"// &
2867 " the one specified for the geometry.", repeats=.true., usage="{Real}", &
2868 default_r_val=0.0_dp, type_of_var=real_t)
2869 CALL section_add_keyword(section, keyword)
2870 CALL keyword_release(keyword)
2871
2872 END SUBROUTINE create_gcn_section
2873
2874! **************************************************************************************************
2875!> \brief creates the input section for the qs part
2876!> \param print_key ...
2877!> \param label ...
2878!> \param print_level ...
2879!> \author teo
2880! **************************************************************************************************
2881 SUBROUTINE create_dipoles_section(print_key, label, print_level)
2882 TYPE(section_type), POINTER :: print_key
2883 CHARACTER(LEN=*), INTENT(IN) :: label
2884 INTEGER, INTENT(IN) :: print_level
2885
2886 TYPE(keyword_type), POINTER :: keyword
2887
2888 cpassert(.NOT. ASSOCIATED(print_key))
2889 CALL cp_print_key_section_create(print_key, __location__, name=trim(label), &
2890 description="Section controlling the calculation of "//trim(label)//"."// &
2891 " Note that the result in the periodic case might be defined modulo a certain period,"// &
2892 " determined by the lattice vectors. During MD, this can lead to jumps.", &
2893 print_level=print_level, filename="__STD_OUT__")
2894
2895 NULLIFY (keyword)
2896 CALL keyword_create(keyword, __location__, &
2897 name="PERIODIC", &
2898 description="Use Berry phase formula (PERIODIC=T) or simple operator (PERIODIC=F). "// &
2899 "For the simple dipole operator, only components perpendicular to the periodic "// &
2900 "lattice vectors are well-defined. All components are well-defined for CELL PERIODIC NONE.", &
2901 usage="PERIODIC {logical}", &
2902 repeats=.false., &
2903 n_var=1, &
2904 default_l_val=.true., lone_keyword_l_val=.true.)
2905 CALL section_add_keyword(print_key, keyword)
2906 CALL keyword_release(keyword)
2907
2908 CALL keyword_create(keyword, __location__, name="REFERENCE", &
2909 variants=s2a("REF"), &
2910 description="Define the reference point for the calculation of the electrostatic moment.", &
2911 usage="REFERENCE COM", &
2912 enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), &
2913 enum_desc=s2a("Use Center of Mass", &
2914 "Use Center of Atomic Charges", &
2915 "Use User Defined Point (Keyword:REF_POINT)", &
2916 "Use Origin of Coordinate System"), &
2917 enum_i_vals=[use_mom_ref_com, &
2921 default_i_val=use_mom_ref_zero)
2922 CALL section_add_keyword(print_key, keyword)
2923 CALL keyword_release(keyword)
2924
2925 CALL keyword_create(keyword, __location__, name="REFERENCE_POINT", &
2926 variants=s2a("REF_POINT"), &
2927 description="Fixed reference point for the calculations of the electrostatic moment.", &
2928 usage="REFERENCE_POINT x y z", &
2929 repeats=.false., &
2930 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
2931 type_of_var=real_t, &
2932 unit_str='bohr')
2933 CALL section_add_keyword(print_key, keyword)
2934 CALL keyword_release(keyword)
2935 END SUBROUTINE create_dipoles_section
2936
2937END MODULE input_cp2k_mm
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public tosi1964b
integer, save, public drautz2019
integer, save, public batatia2022
integer, save, public lysogorskiy2021
integer, save, public tersoff1988
integer, save, public dick1958
integer, save, public foiles1986
integer, save, public devynck2012
integer, save, public tosi1964a
integer, save, public bochkarev2024
integer, save, public siepmann1995
integer, save, public zeng2023
integer, save, public yamada2000
integer, save, public tan2025
integer, save, public batzner2022
integer, save, public mitchell1993
integer, save, public musaelian2023
integer, save, public clabaut2021
integer, save, public wang2018
integer, save, public clabaut2020
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str, do_backup)
creates a print_key section
integer, parameter, public debug_print_level
integer, parameter, public low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public silent_print_level
unit conversion facility
Definition cp_units.F:30
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Definition cp_units.F:1282
Define all structure types related to force field kinds.
integer, parameter, public do_ff_legendre
integer, parameter, public do_ff_undef
integer, parameter, public do_ff_mm4
integer, parameter, public do_ff_charmm
integer, parameter, public do_ff_mm3
integer, parameter, public do_ff_g87
integer, parameter, public do_ff_g96
integer, parameter, public do_ff_morse
integer, parameter, public do_ff_mm2
integer, parameter, public do_ff_harmonic
integer, parameter, public do_ff_amber
integer, parameter, public do_ff_mixed_bend_stretch
integer, parameter, public do_ff_cubic
integer, parameter, public do_ff_quartic
integer, parameter, public do_ff_fues
integer, parameter, public do_ff_opls
Creates and parses an input section to define a generic function.
subroutine, public create_function_section(gen_section, section_name, func_name, description, repeats, do_deriv, input_variables)
Create the input section for a generic function.
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public use_mom_ref_coac
integer, parameter, public use_mom_ref_user
integer, parameter, public use_mom_ref_com
integer, parameter, public use_mom_ref_zero
function that build the field section of the input
subroutine, public create_per_efield_section(section)
creates the section for static periodic fields
creates the mm section of the input
subroutine, public create_genpot_section(section)
This section specifies the input parameters for a generic potential form.
subroutine, public create_williams_section(section)
This section specifies the input parameters for Williams potential type.
subroutine, public create_goodwin_section(section)
This section specifies the input parameters for Goodwin potential type.
subroutine, public create_dipoles_section(print_key, label, print_level)
creates the input section for the qs part
subroutine, public create_charge_section(section)
This section specifies the charge of the MM atoms.
subroutine, public create_nonbonded14_section(section)
This section specifies the input parameters for 1-4 NON-BONDED Interactions.
subroutine, public create_mm_section(section)
Create the input section for FIST.. Come on.. Let's get woohooo.
subroutine, public create_lj_section(section)
This section specifies the input parameters for Lennard-Jones potential type.
subroutine, public create_neighbor_lists_section(section)
This section specifies the input parameters for generation of neighbor lists.
subroutine, public create_tabpot_section(section)
This section specifies the input parameters for TABPOT potential type.
function that build the poisson section of the input
subroutine, public create_poisson_section(section)
Creates the Poisson section.
represents keywords in an input
subroutine, public keyword_release(keyword)
releases the given keyword (see doc/ReferenceCounting.html)
subroutine, public keyword_create(keyword, location, name, description, usage, type_of_var, n_var, repeats, variants, default_val, default_l_val, default_r_val, default_lc_val, default_c_val, default_i_val, default_l_vals, default_r_vals, default_c_vals, default_i_vals, lone_keyword_val, lone_keyword_l_val, lone_keyword_r_val, lone_keyword_c_val, lone_keyword_i_val, lone_keyword_l_vals, lone_keyword_r_vals, lone_keyword_c_vals, lone_keyword_i_vals, enum_c_vals, enum_i_vals, enum, enum_strict, enum_desc, unit_str, citations, deprecation_notice, removed)
creates a keyword object
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_create(section, location, name, description, n_keywords, n_subsections, repeats, citations, deprecation_notice)
creates a list of keywords
subroutine, public section_add_keyword(section, keyword)
adds a keyword to the given section
subroutine, public section_add_subsection(section, subsection)
adds a subsection to the given section
recursive subroutine, public section_release(section)
releases the given keyword list (see doc/ReferenceCounting.html)
a wrapper for basic fortran types.
integer, parameter, public real_t
integer, parameter, public lchar_t
integer, parameter, public char_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
integer, parameter, public default_string_length
Definition kinds.F:57
Utilities for string manipulations.
character(len=1), parameter, public newline
represent a keyword in the input
represent a section of the input file