(git:9782eda)
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: &
32 USE fparser, ONLY: docf
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_deepmd_section(subsection)
1189 CALL section_add_subsection(section, subsection)
1190 CALL section_release(subsection)
1191
1192 CALL create_goodwin_section(subsection)
1193 CALL section_add_subsection(section, subsection)
1194 CALL section_release(subsection)
1195
1196 CALL create_ipbv_section(subsection)
1197 CALL section_add_subsection(section, subsection)
1198 CALL section_release(subsection)
1199
1200 CALL create_bmhft_section(subsection)
1201 CALL section_add_subsection(section, subsection)
1202 CALL section_release(subsection)
1203
1204 CALL create_bmhftd_section(subsection)
1205 CALL section_add_subsection(section, subsection)
1206 CALL section_release(subsection)
1207
1208 CALL create_buck4r_section(subsection)
1209 CALL section_add_subsection(section, subsection)
1210 CALL section_release(subsection)
1211
1212 CALL create_buckmorse_section(subsection)
1213 CALL section_add_subsection(section, subsection)
1214 CALL section_release(subsection)
1215
1216 CALL create_genpot_section(subsection)
1217 CALL section_add_subsection(section, subsection)
1218 CALL section_release(subsection)
1219
1220 CALL create_tersoff_section(subsection)
1221 CALL section_add_subsection(section, subsection)
1222 CALL section_release(subsection)
1223
1224 CALL create_siepmann_section(subsection)
1225 CALL section_add_subsection(section, subsection)
1226 CALL section_release(subsection)
1227
1228 CALL create_gal_section(subsection)
1229 CALL section_add_subsection(section, subsection)
1230 CALL section_release(subsection)
1231
1232 CALL create_gal21_section(subsection)
1233 CALL section_add_subsection(section, subsection)
1234 CALL section_release(subsection)
1235
1236 CALL create_tabpot_section(subsection)
1237 CALL section_add_subsection(section, subsection)
1238 CALL section_release(subsection)
1239
1240 END SUBROUTINE create_nonbonded_section
1241
1242! **************************************************************************************************
1243!> \brief This section specifies the input parameters for generation of
1244!> neighbor lists
1245!> \param section the section to create
1246!> \author teo [07.2007] - Zurich University
1247! **************************************************************************************************
1249 TYPE(section_type), POINTER :: section
1250
1251 TYPE(keyword_type), POINTER :: keyword
1252
1253 NULLIFY (keyword)
1254 cpassert(.NOT. ASSOCIATED(section))
1255 CALL section_create(section, __location__, name="neighbor_lists", &
1256 description="This section specifies the input parameters for the construction of"// &
1257 " neighbor lists.", &
1258 n_keywords=1, n_subsections=0, repeats=.false.)
1259
1260 CALL keyword_create(keyword, __location__, name="VERLET_SKIN", &
1261 description="Defines the Verlet Skin for the generation of the neighbor lists", &
1262 usage="VERLET_SKIN {real}", default_r_val=cp_unit_to_cp2k(value=1.0_dp, &
1263 unit_str="angstrom"), &
1264 unit_str="angstrom")
1265 CALL section_add_keyword(section, keyword)
1266 CALL keyword_release(keyword)
1267
1268 CALL keyword_create(keyword, __location__, name="neighbor_lists_from_scratch", &
1269 description="This keyword enables the building of the neighbouring list from scratch.", &
1270 usage="neighbor_lists_from_scratch logical", &
1271 default_l_val=.false., lone_keyword_l_val=.true.)
1272 CALL section_add_keyword(section, keyword)
1273 CALL keyword_release(keyword)
1274
1275 CALL keyword_create(keyword, __location__, name="GEO_CHECK", &
1276 description="This keyword enables the check that two atoms are never below the minimum"// &
1277 " value used to construct the splines during the construction of the neighbouring list."// &
1278 " Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum"// &
1279 " value of the radius used to generate the splines.", &
1280 usage="GEO_CHECK", &
1281 default_l_val=.true., lone_keyword_l_val=.true.)
1282 CALL section_add_keyword(section, keyword)
1283 CALL keyword_release(keyword)
1284
1285 END SUBROUTINE create_neighbor_lists_section
1286
1287! **************************************************************************************************
1288!> \brief This section specifies the input parameters for a generic potential form
1289!> \param section the section to create
1290!> \author teo
1291! **************************************************************************************************
1292 SUBROUTINE create_genpot_section(section)
1293 TYPE(section_type), POINTER :: section
1294
1295 TYPE(keyword_type), POINTER :: keyword
1296
1297 cpassert(.NOT. ASSOCIATED(section))
1298 CALL section_create(section, __location__, name="GENPOT", &
1299 description="This section specifies the input parameters for a generic potential type. "// &
1300 docf(), &
1301 n_keywords=1, n_subsections=0, repeats=.true.)
1302
1303 NULLIFY (keyword)
1304
1305 CALL keyword_create(keyword, __location__, name="ATOMS", &
1306 description="Defines the atomic kind involved in the generic potential", &
1307 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1308 n_var=2)
1309 CALL section_add_keyword(section, keyword)
1310 CALL keyword_release(keyword)
1311
1312 CALL keyword_create(keyword, __location__, name="FUNCTION", &
1313 description="Specifies the functional form in mathematical notation.", &
1314 usage="FUNCTION a\*EXP(-b\*x^2)/x+D\*log10(x)", type_of_var=lchar_t, &
1315 n_var=1)
1316 CALL section_add_keyword(section, keyword)
1317 CALL keyword_release(keyword)
1318
1319 CALL keyword_create(keyword, __location__, name="VARIABLES", &
1320 description="Defines the variable of the functional form.", &
1321 usage="VARIABLES x", type_of_var=char_t, &
1322 n_var=-1)
1323 CALL section_add_keyword(section, keyword)
1324 CALL keyword_release(keyword)
1325
1326 CALL keyword_create(keyword, __location__, name="PARAMETERS", &
1327 description="Defines the parameters of the functional form", &
1328 usage="PARAMETERS a b D", type_of_var=char_t, &
1329 n_var=-1, repeats=.true.)
1330 CALL section_add_keyword(section, keyword)
1331 CALL keyword_release(keyword)
1332
1333 CALL keyword_create(keyword, __location__, name="VALUES", &
1334 description="Defines the values of parameter of the functional form", &
1335 usage="VALUES ", type_of_var=real_t, &
1336 n_var=-1, repeats=.true., unit_str="internal_cp2k")
1337 CALL section_add_keyword(section, keyword)
1338 CALL keyword_release(keyword)
1339
1340 CALL keyword_create(keyword, __location__, name="UNITS", &
1341 description="Optionally, allows to define valid CP2K unit strings for each parameter value. "// &
1342 "It is assumed that the corresponding parameter value is specified in this unit.", &
1343 usage="UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=char_t, &
1344 n_var=-1, repeats=.true.)
1345 CALL section_add_keyword(section, keyword)
1346 CALL keyword_release(keyword)
1347
1348 CALL keyword_create(keyword, __location__, name="RCUT", &
1349 description="Defines the cutoff parameter of the generic potential", &
1350 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1351 unit_str="angstrom"), &
1352 unit_str="angstrom")
1353 CALL section_add_keyword(section, keyword)
1354 CALL keyword_release(keyword)
1355
1356 CALL keyword_create(keyword, __location__, name="RMIN", &
1357 description="Defines the lower bound of the potential. If not set the range is the"// &
1358 " full range generate by the spline", usage="RMIN {real}", &
1359 type_of_var=real_t, unit_str="angstrom")
1360 CALL section_add_keyword(section, keyword)
1361 CALL keyword_release(keyword)
1362
1363 CALL keyword_create(keyword, __location__, name="RMAX", &
1364 description="Defines the upper bound of the potential. If not set the range is the"// &
1365 " full range generate by the spline", usage="RMAX {real}", &
1366 type_of_var=real_t, unit_str="angstrom")
1367 CALL section_add_keyword(section, keyword)
1368 CALL keyword_release(keyword)
1369
1370 END SUBROUTINE create_genpot_section
1371
1372! **************************************************************************************************
1373!> \brief This section specifies the input parameters for EAM potential type
1374!> \param section the section to create
1375!> \author teo
1376! **************************************************************************************************
1377 SUBROUTINE create_eam_section(section)
1378 TYPE(section_type), POINTER :: section
1379
1380 TYPE(keyword_type), POINTER :: keyword
1381
1382 cpassert(.NOT. ASSOCIATED(section))
1383 CALL section_create(section, __location__, name="EAM", &
1384 description="This section specifies the input parameters for EAM potential type.", &
1385 citations=[foiles1986], n_keywords=1, n_subsections=0, repeats=.true.)
1386
1387 NULLIFY (keyword)
1388
1389 CALL keyword_create(keyword, __location__, name="ATOMS", &
1390 description="Defines the atomic kind involved in the nonbond potential", &
1391 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1392 n_var=2)
1393 CALL section_add_keyword(section, keyword)
1394 CALL keyword_release(keyword)
1395
1396 CALL keyword_create(keyword, __location__, name="PARM_FILE_NAME", &
1397 variants=["PARMFILE"], &
1398 description="Specifies the filename that contains the tabulated EAM potential. "// &
1399 "File structure: the first line of the potential file contains a title. "// &
1400 "The second line contains: atomic number, mass and lattice constant. "// &
1401 "These information are parsed but not used in CP2K. The third line contains: "// &
1402 "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// &
1403 "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// &
1404 "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// &
1405 "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// &
1406 "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// &
1407 "and its derivative [ev*au_c^-1].", &
1408 usage="PARM_FILE_NAME {FILENAME}", default_lc_val=" ")
1409 CALL section_add_keyword(section, keyword)
1410 CALL keyword_release(keyword)
1411
1412 END SUBROUTINE create_eam_section
1413
1414! **************************************************************************************************
1415!> \brief This section specifies the input parameters for NEQUIP potential type
1416!> \param section the section to create
1417!> \author teo
1418! **************************************************************************************************
1419 SUBROUTINE create_nequip_section(section)
1420 TYPE(section_type), POINTER :: section
1421
1422 TYPE(keyword_type), POINTER :: keyword
1423
1424 cpassert(.NOT. ASSOCIATED(section))
1425 CALL section_create(section, __location__, name="NEQUIP", &
1426 description="This section specifies the input parameters for NEQUIP potential type "// &
1427 "based on equivariant neural networks, and for ALLEGRO, a local large-scale variant. "// &
1428 "Note: To enable the prediction of stress, along with energies and forces, the keyword "// &
1429 "StressForceOutput must be included in the nequip config *.yaml file used to train the "// &
1430 "model, regardless of whether the model has been trained on the stress. "// &
1431 "Requires linking with libtorch library from <https://pytorch.org/cppdocs/installing.html>.", &
1432 citations=[batzner2022, musaelian2023, tan2025], n_keywords=1, n_subsections=0, repeats=.false.)
1433
1434 NULLIFY (keyword)
1435
1436 CALL keyword_create(keyword, __location__, name="ATOMS", &
1437 description="Defines the atomic kinds involved in the NEQUIP potential. "// &
1438 "Provide a list of each element, making sure that the mapping from the ATOMS list "// &
1439 "to NequIP atom types is correct. This mapping should also be consistent for the "// &
1440 "atomic coordinates as specified in the sections COORDS or TOPOLOGY.", &
1441 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1442 n_var=-1)
1443 CALL section_add_keyword(section, keyword)
1444 CALL keyword_release(keyword)
1445
1446 CALL keyword_create(keyword, __location__, name="MODEL_TYPE", &
1447 variants=["MODEL"], &
1448 description="Specifies the type of model used. Allowed values are NEQUIP or ALLEGRO.", &
1449 usage="MODEL_TYPE {NEQUIP}", default_lc_val=" ")
1450 CALL section_add_keyword(section, keyword)
1451 CALL keyword_release(keyword)
1452
1453 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1454 variants=["MODEL_FILE_NAME"], &
1455 description="Specifies the filename that contains the NEQUIP model.", &
1456 usage="POT_FILE_NAME {FILENAME}", default_lc_val=" ")
1457 CALL section_add_keyword(section, keyword)
1458 CALL keyword_release(keyword)
1459
1460 CALL keyword_create(keyword, __location__, name="UNIT_LENGTH", &
1461 description="Units of length in the NEQUIP model.pth file. "// &
1462 "The units of positions, cell, energies and forces must be self-consistent: "// &
1463 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1464 usage="UNIT_LENGTH angstrom", default_c_val="angstrom")
1465 CALL section_add_keyword(section, keyword)
1466 CALL keyword_release(keyword)
1467
1468 CALL keyword_create(keyword, __location__, name="UNIT_ENERGY", &
1469 description="Units of energy in the NEQUIP model.pth file. "// &
1470 "The units of positions, energies and forces must be self-consistent: "// &
1471 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1472 usage="UNIT_ENERGY hartree", default_c_val="eV")
1473 CALL section_add_keyword(section, keyword)
1474 CALL keyword_release(keyword)
1475
1476 CALL keyword_create(keyword, __location__, name="UNIT_FORCES", &
1477 description="Units of the forces in the NEQUIP model.pth file. "// &
1478 "The units of positions, energies and forces must be self-consistent: "// &
1479 "e.g. coordinates in Angstrom, energies in eV, forces in eV/Angstrom. ", &
1480 usage="UNIT_FORCES hartree/bohr", default_c_val="eV/Angstrom")
1481 CALL section_add_keyword(section, keyword)
1482 CALL keyword_release(keyword)
1483
1484 END SUBROUTINE create_nequip_section
1485
1486! **************************************************************************************************
1487!> \brief This section specifies the input parameters for ACE potential type
1488!> \param section the section to create
1489!> \author
1490! **************************************************************************************************
1491 SUBROUTINE create_ace_section(section)
1492 TYPE(section_type), POINTER :: section
1493
1494 TYPE(keyword_type), POINTER :: keyword
1495
1496 CALL section_create(section, __location__, name="ACE", &
1497 description="This section specifies the input parameters for Atomic Cluster Expansion type. "// &
1498 "Mainly intended for accurate representation of "// &
1499 "potential energy surfaces. "// &
1500 "Requires linking with ACE library from "// &
1501 "<a href=""https://github.com/ICAMS/lammps-user-pace"" "// &
1502 "target=""_blank"">https://github.com/ICAMS/lammps-user-pace</a> .", &
1504 n_keywords=1, n_subsections=0, repeats=.false.)
1505 NULLIFY (keyword)
1506
1507 CALL keyword_create(keyword, __location__, name="ATOMS", &
1508 description="Defines the atomic species. "// &
1509 "Provide a list of each element, "// &
1510 "making sure that the mapping from the ATOMS list to ACE atom types is correct.", &
1511 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1512 n_var=-1)
1513 CALL section_add_keyword(section, keyword)
1514 CALL keyword_release(keyword)
1515 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1516 variants=["PARMFILE"], &
1517 description="Specifies the filename that contains the ACE potential parameters.", &
1518 usage="POT_FILE_NAME {FILENAME}", default_lc_val="test.yaml")
1519 CALL section_add_keyword(section, keyword)
1520 CALL keyword_release(keyword)
1521 END SUBROUTINE create_ace_section
1522
1523! **************************************************************************************************
1524!> \brief This section specifies the input parameters for DEEPMD potential type
1525!> \param section the section to create
1526!> \author ybzhuang
1527! **************************************************************************************************
1528 SUBROUTINE create_deepmd_section(section)
1529 TYPE(section_type), POINTER :: section
1530
1531 TYPE(keyword_type), POINTER :: keyword
1532
1533 CALL section_create(section, __location__, name="DEEPMD", &
1534 description="This section specifies the input parameters for Deep Potential type. "// &
1535 "Mainly intended for things like neural network to DFT "// &
1536 "to achieve correlated-wavefunction-like accuracy. "// &
1537 "Requires linking with DeePMD-kit library from "// &
1538 "<a href=""https://docs.deepmodeling.com/projects/deepmd/en/master"" "// &
1539 "target=""_blank"">https://docs.deepmodeling.com/projects/deepmd/en/master</a> .", &
1540 citations=[wang2018, zeng2023], n_keywords=1, n_subsections=0, repeats=.false.)
1541 NULLIFY (keyword)
1542 CALL keyword_create(keyword, __location__, name="ATOMS", &
1543 description="Defines the atomic kinds involved in the Deep Potential. "// &
1544 "Provide a list of each element, "// &
1545 "making sure that the mapping from the ATOMS list to DeePMD atom types is correct.", &
1546 usage="ATOMS {KIND 1} {KIND 2} .. {KIND N}", type_of_var=char_t, &
1547 n_var=-1)
1548 CALL section_add_keyword(section, keyword)
1549 CALL keyword_release(keyword)
1550 CALL keyword_create(keyword, __location__, name="POT_FILE_NAME", &
1551 variants=["PARMFILE"], &
1552 description="Specifies the filename that contains the DeePMD-kit potential.", &
1553 usage="POT_FILE_NAME {FILENAME}", default_lc_val="graph.pb")
1554 CALL section_add_keyword(section, keyword)
1555 CALL keyword_release(keyword)
1556 CALL keyword_create(keyword, __location__, name="ATOMS_DEEPMD_TYPE", &
1557 description="Specifies the atomic TYPE for the DeePMD-kit potential. "// &
1558 "Provide a list of index, making sure that the mapping "// &
1559 "from the ATOMS list to DeePMD atom types is correct. ", &
1560 usage="ATOMS_DEEPMD_TYPE {TYPE INTEGER 1} {TYPE INTEGER 2} .. "// &
1561 "{TYPE INTEGER N}", type_of_var=integer_t, &
1562 n_var=-1)
1563 CALL section_add_keyword(section, keyword)
1564 CALL keyword_release(keyword)
1565 END SUBROUTINE create_deepmd_section
1566
1567! **************************************************************************************************
1568!> \brief This section specifies the input parameters for Lennard-Jones potential type
1569!> \param section the section to create
1570!> \author teo
1571! **************************************************************************************************
1572 SUBROUTINE create_lj_section(section)
1573 TYPE(section_type), POINTER :: section
1574
1575 TYPE(keyword_type), POINTER :: keyword
1576
1577 cpassert(.NOT. ASSOCIATED(section))
1578 CALL section_create(section, __location__, name="lennard-jones", &
1579 description="This section specifies the input parameters for LENNARD-JONES potential type. "// &
1580 "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", &
1581 n_keywords=1, n_subsections=0, repeats=.true.)
1582
1583 NULLIFY (keyword)
1584
1585 CALL keyword_create(keyword, __location__, name="ATOMS", &
1586 description="Defines the atomic kind involved in the nonbond potential", &
1587 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1588 n_var=2)
1589 CALL section_add_keyword(section, keyword)
1590 CALL keyword_release(keyword)
1591
1592 CALL keyword_create(keyword, __location__, name="EPSILON", &
1593 description="Defines the EPSILON parameter of the LJ potential", &
1594 usage="EPSILON {real}", type_of_var=real_t, &
1595 n_var=1, unit_str="K_e")
1596 CALL section_add_keyword(section, keyword)
1597 CALL keyword_release(keyword)
1598
1599 CALL keyword_create(keyword, __location__, name="SIGMA", &
1600 description="Defines the SIGMA parameter of the LJ potential", &
1601 usage="SIGMA {real}", type_of_var=real_t, &
1602 n_var=1, unit_str="angstrom")
1603 CALL section_add_keyword(section, keyword)
1604 CALL keyword_release(keyword)
1605
1606 CALL keyword_create(keyword, __location__, name="RCUT", &
1607 description="Defines the cutoff parameter of the LJ potential", &
1608 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1609 unit_str="angstrom"), &
1610 unit_str="angstrom")
1611 CALL section_add_keyword(section, keyword)
1612 CALL keyword_release(keyword)
1613
1614 CALL keyword_create(keyword, __location__, name="RMIN", &
1615 description="Defines the lower bound of the potential. If not set the range is the"// &
1616 " full range generate by the spline", usage="RMIN {real}", &
1617 type_of_var=real_t, unit_str="angstrom")
1618 CALL section_add_keyword(section, keyword)
1619 CALL keyword_release(keyword)
1620
1621 CALL keyword_create(keyword, __location__, name="RMAX", &
1622 description="Defines the upper bound of the potential. If not set the range is the"// &
1623 " full range generate by the spline", usage="RMAX {real}", &
1624 type_of_var=real_t, unit_str="angstrom")
1625 CALL section_add_keyword(section, keyword)
1626 CALL keyword_release(keyword)
1627
1628 END SUBROUTINE create_lj_section
1629
1630! **************************************************************************************************
1631!> \brief This section specifies the input parameters for Williams potential type
1632!> \param section the section to create
1633!> \author teo
1634! **************************************************************************************************
1635 SUBROUTINE create_williams_section(section)
1636 TYPE(section_type), POINTER :: section
1637
1638 TYPE(keyword_type), POINTER :: keyword
1639
1640 cpassert(.NOT. ASSOCIATED(section))
1641 CALL section_create(section, __location__, name="williams", &
1642 description="This section specifies the input parameters for WILLIAMS potential type. "// &
1643 "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", &
1644 n_keywords=1, n_subsections=0, repeats=.true.)
1645
1646 NULLIFY (keyword)
1647
1648 CALL keyword_create(keyword, __location__, name="ATOMS", &
1649 description="Defines the atomic kind involved in the nonbond potential", &
1650 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1651 n_var=2)
1652 CALL section_add_keyword(section, keyword)
1653 CALL keyword_release(keyword)
1654
1655 CALL keyword_create(keyword, __location__, name="A", &
1656 description="Defines the A parameter of the Williams potential", &
1657 usage="A {real}", type_of_var=real_t, &
1658 n_var=1, unit_str="K_e")
1659 CALL section_add_keyword(section, keyword)
1660 CALL keyword_release(keyword)
1661
1662 CALL keyword_create(keyword, __location__, name="B", &
1663 description="Defines the B parameter of the Williams potential", &
1664 usage="B {real}", type_of_var=real_t, &
1665 n_var=1, unit_str="angstrom^-1")
1666 CALL section_add_keyword(section, keyword)
1667 CALL keyword_release(keyword)
1668
1669 CALL keyword_create(keyword, __location__, name="C", &
1670 description="Defines the C parameter of the Williams potential", &
1671 usage="C {real}", type_of_var=real_t, &
1672 n_var=1, unit_str="K_e*angstrom^6")
1673 CALL section_add_keyword(section, keyword)
1674 CALL keyword_release(keyword)
1675
1676 CALL keyword_create(keyword, __location__, name="RCUT", &
1677 description="Defines the cutoff parameter of the Williams potential", &
1678 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1679 unit_str="angstrom"), &
1680 unit_str="angstrom")
1681 CALL section_add_keyword(section, keyword)
1682 CALL keyword_release(keyword)
1683
1684 CALL keyword_create(keyword, __location__, name="RMIN", &
1685 description="Defines the lower bound of the potential. If not set the range is the"// &
1686 " full range generate by the spline", usage="RMIN {real}", &
1687 type_of_var=real_t, unit_str="angstrom")
1688 CALL section_add_keyword(section, keyword)
1689 CALL keyword_release(keyword)
1690
1691 CALL keyword_create(keyword, __location__, name="RMAX", &
1692 description="Defines the upper bound of the potential. If not set the range is the"// &
1693 " full range generate by the spline", usage="RMAX {real}", &
1694 type_of_var=real_t, unit_str="angstrom")
1695 CALL section_add_keyword(section, keyword)
1696 CALL keyword_release(keyword)
1697
1698 END SUBROUTINE create_williams_section
1699
1700! **************************************************************************************************
1701!> \brief This section specifies the input parameters for Goodwin potential type
1702!> \param section the section to create
1703!> \author teo
1704! **************************************************************************************************
1705 SUBROUTINE create_goodwin_section(section)
1706 TYPE(section_type), POINTER :: section
1707
1708 TYPE(keyword_type), POINTER :: keyword
1709
1710 cpassert(.NOT. ASSOCIATED(section))
1711 CALL section_create(section, __location__, name="goodwin", &
1712 description="This section specifies the input parameters for GOODWIN potential type. "// &
1713 "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", &
1714 n_keywords=1, n_subsections=0, repeats=.true.)
1715
1716 NULLIFY (keyword)
1717 CALL keyword_create(keyword, __location__, name="ATOMS", &
1718 description="Defines the atomic kind involved in the nonbond potential", &
1719 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1720 n_var=2)
1721 CALL section_add_keyword(section, keyword)
1722 CALL keyword_release(keyword)
1723
1724 CALL keyword_create(keyword, __location__, name="VR0", &
1725 description="Defines the VR0 parameter of the Goodwin potential", &
1726 usage="VR0 {real}", type_of_var=real_t, &
1727 n_var=1, unit_str="K_e")
1728 CALL section_add_keyword(section, keyword)
1729 CALL keyword_release(keyword)
1730
1731 CALL keyword_create(keyword, __location__, name="D", &
1732 description="Defines the D parameter of the Goodwin potential", &
1733 usage="D {real}", type_of_var=real_t, &
1734 n_var=1, unit_str="angstrom")
1735 CALL section_add_keyword(section, keyword)
1736 CALL keyword_release(keyword)
1737
1738 CALL keyword_create(keyword, __location__, name="DC", &
1739 description="Defines the DC parameter of the Goodwin potential", &
1740 usage="DC {real}", type_of_var=real_t, &
1741 n_var=1, unit_str="angstrom")
1742 CALL section_add_keyword(section, keyword)
1743 CALL keyword_release(keyword)
1744
1745 CALL keyword_create(keyword, __location__, name="M", &
1746 description="Defines the M parameter of the Goodwin potential", &
1747 usage="M {real}", type_of_var=integer_t, &
1748 n_var=1)
1749 CALL section_add_keyword(section, keyword)
1750 CALL keyword_release(keyword)
1751
1752 CALL keyword_create(keyword, __location__, name="MC", &
1753 description="Defines the MC parameter of the Goodwin potential", &
1754 usage="MC {real}", type_of_var=integer_t, &
1755 n_var=1)
1756 CALL section_add_keyword(section, keyword)
1757 CALL keyword_release(keyword)
1758
1759 CALL keyword_create(keyword, __location__, name="RCUT", &
1760 description="Defines the cutoff parameter of the Goodwin potential", &
1761 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1762 unit_str="angstrom"), &
1763 unit_str="angstrom")
1764 CALL section_add_keyword(section, keyword)
1765 CALL keyword_release(keyword)
1766
1767 CALL keyword_create(keyword, __location__, name="RMIN", &
1768 description="Defines the lower bound of the potential. If not set the range is the"// &
1769 " full range generate by the spline", usage="RMIN {real}", &
1770 type_of_var=real_t, unit_str="angstrom")
1771 CALL section_add_keyword(section, keyword)
1772 CALL keyword_release(keyword)
1773
1774 CALL keyword_create(keyword, __location__, name="RMAX", &
1775 description="Defines the upper bound of the potential. If not set the range is the"// &
1776 " full range generate by the spline", usage="RMAX {real}", &
1777 type_of_var=real_t, unit_str="angstrom")
1778 CALL section_add_keyword(section, keyword)
1779 CALL keyword_release(keyword)
1780
1781 END SUBROUTINE create_goodwin_section
1782
1783! **************************************************************************************************
1784!> \brief This section specifies the input parameters for IPBV potential type
1785!> \param section the section to create
1786!> \author teo
1787! **************************************************************************************************
1788 SUBROUTINE create_ipbv_section(section)
1789 TYPE(section_type), POINTER :: section
1790
1791 TYPE(keyword_type), POINTER :: keyword
1792
1793 cpassert(.NOT. ASSOCIATED(section))
1794 CALL section_create(section, __location__, name="ipbv", &
1795 description="This section specifies the input parameters for IPBV potential type. "// &
1796 "Functional form: Implicit table function.", &
1797 n_keywords=1, n_subsections=0, repeats=.true.)
1798
1799 NULLIFY (keyword)
1800
1801 CALL keyword_create(keyword, __location__, name="ATOMS", &
1802 description="Defines the atomic kind involved in the IPBV nonbond potential", &
1803 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1804 n_var=2)
1805 CALL section_add_keyword(section, keyword)
1806 CALL keyword_release(keyword)
1807
1808 CALL keyword_create(keyword, __location__, name="RCUT", &
1809 description="Defines the cutoff parameter of the IPBV potential", &
1810 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
1811 unit_str="angstrom"), &
1812 unit_str="angstrom")
1813 CALL section_add_keyword(section, keyword)
1814 CALL keyword_release(keyword)
1815
1816 CALL keyword_create(keyword, __location__, name="RMIN", &
1817 description="Defines the lower bound of the potential. If not set the range is the"// &
1818 " full range generate by the spline", usage="RMIN {real}", &
1819 type_of_var=real_t, unit_str="angstrom")
1820 CALL section_add_keyword(section, keyword)
1821 CALL keyword_release(keyword)
1822
1823 CALL keyword_create(keyword, __location__, name="RMAX", &
1824 description="Defines the upper bound of the potential. If not set the range is the"// &
1825 " full range generate by the spline", usage="RMAX {real}", &
1826 type_of_var=real_t, unit_str="angstrom")
1827 CALL section_add_keyword(section, keyword)
1828 CALL keyword_release(keyword)
1829
1830 END SUBROUTINE create_ipbv_section
1831
1832! **************************************************************************************************
1833!> \brief This section specifies the input parameters for BMHFT potential type
1834!> \param section the section to create
1835!> \author teo
1836! **************************************************************************************************
1837 SUBROUTINE create_bmhft_section(section)
1838 TYPE(section_type), POINTER :: section
1839
1840 TYPE(keyword_type), POINTER :: keyword
1841
1842 cpassert(.NOT. ASSOCIATED(section))
1843 CALL section_create(section, __location__, name="BMHFT", &
1844 description="This section specifies the input parameters for BMHFT potential type. "// &
1845 "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8. "// &
1846 "Values available inside cp2k only for the Na/Cl pair.", &
1847 citations=[tosi1964a, tosi1964b], n_keywords=1, n_subsections=0, repeats=.true.)
1848
1849 NULLIFY (keyword)
1850
1851 CALL keyword_create(keyword, __location__, name="ATOMS", &
1852 description="Defines the atomic kind involved in the BMHFT nonbond potential", &
1853 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1854 n_var=2)
1855 CALL section_add_keyword(section, keyword)
1856 CALL keyword_release(keyword)
1857
1858 CALL keyword_create(keyword, __location__, name="MAP_ATOMS", &
1859 description="Defines the kinds for which internally is defined the BMHFT nonbond potential"// &
1860 " at the moment only Na and Cl.", &
1861 usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1862 n_var=2)
1863 CALL section_add_keyword(section, keyword)
1864 CALL keyword_release(keyword)
1865
1866 CALL keyword_create(keyword, __location__, name="RCUT", &
1867 description="Defines the cutoff parameter of the BMHFT potential", &
1868 usage="RCUT {real}", default_r_val=7.8_dp, &
1869 unit_str="angstrom")
1870 CALL section_add_keyword(section, keyword)
1871 CALL keyword_release(keyword)
1872
1873 CALL keyword_create(keyword, __location__, name="A", &
1874 description="Defines the A parameter of the Fumi-Tosi Potential", &
1875 usage="A {real}", type_of_var=real_t, &
1876 n_var=1, unit_str="hartree")
1877 CALL section_add_keyword(section, keyword)
1878 CALL keyword_release(keyword)
1879
1880 CALL keyword_create(keyword, __location__, name="B", &
1881 description="Defines the B parameter of the Fumi-Tosi Potential", &
1882 usage="B {real}", type_of_var=real_t, &
1883 n_var=1, unit_str="angstrom^-1")
1884 CALL section_add_keyword(section, keyword)
1885 CALL keyword_release(keyword)
1886
1887 CALL keyword_create(keyword, __location__, name="C", &
1888 description="Defines the C parameter of the Fumi-Tosi Potential", &
1889 usage="C {real}", type_of_var=real_t, &
1890 n_var=1, unit_str="hartree*angstrom^6")
1891 CALL section_add_keyword(section, keyword)
1892 CALL keyword_release(keyword)
1893
1894 CALL keyword_create(keyword, __location__, name="D", &
1895 description="Defines the D parameter of the Fumi-Tosi Potential", &
1896 usage="D {real}", type_of_var=real_t, &
1897 n_var=1, unit_str="hartree*angstrom^8")
1898 CALL section_add_keyword(section, keyword)
1899 CALL keyword_release(keyword)
1900
1901 CALL keyword_create(keyword, __location__, name="RMIN", &
1902 description="Defines the lower bound of the potential. If not set the range is the"// &
1903 " full range generate by the spline", usage="RMIN {real}", &
1904 type_of_var=real_t, unit_str="angstrom")
1905 CALL section_add_keyword(section, keyword)
1906 CALL keyword_release(keyword)
1907
1908 CALL keyword_create(keyword, __location__, name="RMAX", &
1909 description="Defines the upper bound of the potential. If not set the range is the"// &
1910 " full range generate by the spline", usage="RMAX {real}", &
1911 type_of_var=real_t, unit_str="angstrom")
1912 CALL section_add_keyword(section, keyword)
1913 CALL keyword_release(keyword)
1914
1915 END SUBROUTINE create_bmhft_section
1916
1917! **************************************************************************************************
1918!> \brief This section specifies the input parameters for BMHFTD potential type
1919!> \param section the section to create
1920!> \par History
1921!> - Unused input keyword ORDER removed (18.10.2021, MK)
1922!> \author Mathieu Salanne 05.2010
1923! **************************************************************************************************
1924 SUBROUTINE create_bmhftd_section(section)
1925 TYPE(section_type), POINTER :: section
1926
1927 TYPE(keyword_type), POINTER :: keyword
1928
1929 cpassert(.NOT. ASSOCIATED(section))
1930 CALL section_create(section, __location__, name="BMHFTD", &
1931 description="This section specifies the input parameters for the BMHFTD potential type. "// &
1932 "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8 "// &
1933 "where f_order(r) = 1 - exp(-BD*r)*\sum_{k=0}^order (BD*r)^k/k! "// &
1934 "(Tang-Toennies damping function). No pre-defined parameter values are available.", &
1935 citations=[tosi1964a, tosi1964b], n_keywords=1, n_subsections=0, repeats=.true.)
1936
1937 NULLIFY (keyword)
1938
1939 CALL keyword_create(keyword, __location__, name="ATOMS", &
1940 description="Defines the atomic kind involved in the BMHFTD nonbond potential", &
1941 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1942 n_var=2)
1943 CALL section_add_keyword(section, keyword)
1944 CALL keyword_release(keyword)
1945
1946 CALL keyword_create(keyword, __location__, name="MAP_ATOMS", &
1947 description="Defines the kinds for which internally is defined the BMHFTD nonbond potential"// &
1948 " at the moment no species included.", &
1949 usage="MAP_ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
1950 n_var=2)
1951 CALL section_add_keyword(section, keyword)
1952 CALL keyword_release(keyword)
1953
1954 CALL keyword_create(keyword, __location__, name="RCUT", &
1955 description="Defines the cutoff parameter of the BMHFTD potential", &
1956 usage="RCUT {real}", default_r_val=7.8_dp, &
1957 unit_str="angstrom")
1958 CALL section_add_keyword(section, keyword)
1959 CALL keyword_release(keyword)
1960
1961 CALL keyword_create(keyword, __location__, name="A", &
1962 description="Defines the A parameter of the dispersion-damped Fumi-Tosi potential", &
1963 usage="A {real}", type_of_var=real_t, &
1964 n_var=1, unit_str="hartree")
1965 CALL section_add_keyword(section, keyword)
1966 CALL keyword_release(keyword)
1967
1968 CALL keyword_create(keyword, __location__, name="B", &
1969 description="Defines the B parameter of the dispersion-damped Fumi-Tosi potential", &
1970 usage="B {real}", type_of_var=real_t, &
1971 n_var=1, unit_str="angstrom^-1")
1972 CALL section_add_keyword(section, keyword)
1973 CALL keyword_release(keyword)
1974
1975 CALL keyword_create(keyword, __location__, name="C", &
1976 description="Defines the C parameter of the dispersion-damped Fumi-Tosi potential", &
1977 usage="C {real}", type_of_var=real_t, &
1978 n_var=1, unit_str="hartree*angstrom^6")
1979 CALL section_add_keyword(section, keyword)
1980 CALL keyword_release(keyword)
1981
1982 CALL keyword_create(keyword, __location__, name="D", &
1983 description="Defines the D parameter of the dispersion-damped Fumi-Tosi potential", &
1984 usage="D {real}", type_of_var=real_t, &
1985 n_var=1, unit_str="hartree*angstrom^8")
1986 CALL section_add_keyword(section, keyword)
1987 CALL keyword_release(keyword)
1988
1989 CALL keyword_create(keyword, __location__, name="BD", &
1990 description="Defines the BD parameters of the dispersion-damped Fumi-Tosi potential. "// &
1991 "One or two parameter values are expected. If only one value is provided, then this "// &
1992 "value will be used both for the 6th and the 8th order term.", &
1993 usage="BD {real} {real}", type_of_var=real_t, &
1994 n_var=-1, unit_str="angstrom^-1")
1995 CALL section_add_keyword(section, keyword)
1996 CALL keyword_release(keyword)
1997
1998 CALL keyword_create(keyword, __location__, name="RMIN", &
1999 description="Defines the lower bound of the potential. If not set the range is the"// &
2000 " full range generate by the spline", usage="RMIN {real}", &
2001 type_of_var=real_t, unit_str="angstrom")
2002 CALL section_add_keyword(section, keyword)
2003 CALL keyword_release(keyword)
2004
2005 CALL keyword_create(keyword, __location__, name="RMAX", &
2006 description="Defines the upper bound of the potential. If not set the range is the"// &
2007 " full range generate by the spline", usage="RMAX {real}", &
2008 type_of_var=real_t, unit_str="angstrom")
2009 CALL section_add_keyword(section, keyword)
2010 CALL keyword_release(keyword)
2011
2012 END SUBROUTINE create_bmhftd_section
2013
2014! **************************************************************************************************
2015!> \brief This section specifies the input parameters for Buckingham 4 ranges potential type
2016!> \param section the section to create
2017!> \author MI
2018! **************************************************************************************************
2019 SUBROUTINE create_buck4r_section(section)
2020 TYPE(section_type), POINTER :: section
2021
2022 TYPE(keyword_type), POINTER :: keyword
2023
2024 cpassert(.NOT. ASSOCIATED(section))
2025 CALL section_create(section, __location__, name="BUCK4RANGES", &
2026 description="This section specifies the input parameters for the Buckingham 4-ranges"// &
2027 " potential type."//newline// &
2028 "| Range | Functional Form |"//newline// &
2029 "| ----- | --------------- |"//newline// &
2030 "| $ r < r_1 $ | $ V(r) = A\exp(-Br) $ |"//newline// &
2031 "| $ r_1 \leq r < r_2 $ | $ V(r) = \sum_n \operatorname{POLY1}(n)r_n $ |"//newline// &
2032 "| $ r_2 \leq r < r_3 $ | $ V(r) = \sum_n \operatorname{POLY2}(n)r_n $ |"//newline// &
2033 "| $ r \geq r_3 $ | $ V(r) = -C/r_6 $ |"//newline, &
2034 n_keywords=1, n_subsections=0, repeats=.true.)
2035
2036 NULLIFY (keyword)
2037
2038 CALL keyword_create(keyword, __location__, name="ATOMS", &
2039 description="Defines the atomic kind involved in the nonbond potential", &
2040 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2041 n_var=2)
2042 CALL section_add_keyword(section, keyword)
2043 CALL keyword_release(keyword)
2044
2045 CALL keyword_create(keyword, __location__, name="A", &
2046 description="Defines the A parameter of the Buckingham potential", &
2047 usage="A {real}", type_of_var=real_t, &
2048 n_var=1, unit_str="K_e")
2049 CALL section_add_keyword(section, keyword)
2050 CALL keyword_release(keyword)
2051
2052 CALL keyword_create(keyword, __location__, name="B", &
2053 description="Defines the B parameter of the Buckingham potential", &
2054 usage="B {real}", type_of_var=real_t, &
2055 n_var=1, unit_str="angstrom^-1")
2056 CALL section_add_keyword(section, keyword)
2057 CALL keyword_release(keyword)
2058
2059 CALL keyword_create(keyword, __location__, name="C", &
2060 description="Defines the C parameter of the Buckingham potential", &
2061 usage="C {real}", type_of_var=real_t, &
2062 n_var=1, unit_str="K_e*angstrom^6")
2063 CALL section_add_keyword(section, keyword)
2064 CALL keyword_release(keyword)
2065
2066 CALL keyword_create(keyword, __location__, name="R1", &
2067 description="Defines the upper bound of the first range ", &
2068 usage="R1 {real}", type_of_var=real_t, &
2069 n_var=1, unit_str="angstrom")
2070 CALL section_add_keyword(section, keyword)
2071 CALL keyword_release(keyword)
2072
2073 CALL keyword_create(keyword, __location__, name="R2", &
2074 description="Defines the upper bound of the second range ", &
2075 usage="R2 {real}", type_of_var=real_t, &
2076 n_var=1, unit_str="angstrom")
2077 CALL section_add_keyword(section, keyword)
2078 CALL keyword_release(keyword)
2079
2080 CALL keyword_create(keyword, __location__, name="R3", &
2081 description="Defines the upper bound of the third range ", &
2082 usage="R3 {real}", type_of_var=real_t, &
2083 n_var=1, unit_str="angstrom")
2084 CALL section_add_keyword(section, keyword)
2085 CALL keyword_release(keyword)
2086
2087 CALL keyword_create(keyword, __location__, name="POLY1", &
2088 description="Coefficients of the polynomial used in the second range "// &
2089 "This keyword can be repeated several times.", &
2090 usage="POLY1 C1 C2 C3 ..", &
2091 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.true.)
2092 CALL section_add_keyword(section, keyword)
2093 CALL keyword_release(keyword)
2094
2095 CALL keyword_create(keyword, __location__, name="POLY2", &
2096 description="Coefficients of the polynomial used in the third range "// &
2097 "This keyword can be repeated several times.", &
2098 usage="POLY2 C1 C2 C3 ..", &
2099 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.true.)
2100 CALL section_add_keyword(section, keyword)
2101 CALL keyword_release(keyword)
2102
2103 CALL keyword_create(keyword, __location__, name="RCUT", &
2104 description="Defines the cutoff parameter of the Buckingham potential", &
2105 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2106 unit_str="angstrom"), &
2107 unit_str="angstrom")
2108 CALL section_add_keyword(section, keyword)
2109 CALL keyword_release(keyword)
2110
2111 CALL keyword_create(keyword, __location__, name="RMIN", &
2112 description="Defines the lower bound of the potential. If not set the range is the"// &
2113 " full range generate by the spline", usage="RMIN {real}", &
2114 type_of_var=real_t, unit_str="angstrom")
2115 CALL section_add_keyword(section, keyword)
2116 CALL keyword_release(keyword)
2117
2118 CALL keyword_create(keyword, __location__, name="RMAX", &
2119 description="Defines the upper bound of the potential. If not set the range is the"// &
2120 " full range generate by the spline", usage="RMAX {real}", &
2121 type_of_var=real_t, unit_str="angstrom")
2122 CALL section_add_keyword(section, keyword)
2123 CALL keyword_release(keyword)
2124
2125 END SUBROUTINE create_buck4r_section
2126
2127! **************************************************************************************************
2128!> \brief This section specifies the input parameters for Buckingham + Morse potential type
2129!> \param section the section to create
2130!> \author MI
2131! **************************************************************************************************
2132 SUBROUTINE create_buckmorse_section(section)
2133 TYPE(section_type), POINTER :: section
2134
2135 TYPE(keyword_type), POINTER :: keyword
2136
2137 cpassert(.NOT. ASSOCIATED(section))
2138 CALL section_create( &
2139 section, __location__, name="BUCKMORSE", &
2140 description="This section specifies the input parameters for"// &
2141 " Buckingham plus Morse potential type"// &
2142 " Functional Form: V(r) = F0*(B1+B2)*EXP([A1+A2-r]/[B1+B2])-C/r^6+D*{EXP[-2*beta*(r-R0)]-2*EXP[-beta*(r-R0)]}.", &
2143 citations=[yamada2000], n_keywords=1, n_subsections=0, repeats=.true.)
2144
2145 NULLIFY (keyword)
2146
2147 CALL keyword_create(keyword, __location__, name="ATOMS", &
2148 description="Defines the atomic kind involved in the nonbond potential", &
2149 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2150 n_var=2)
2151 CALL section_add_keyword(section, keyword)
2152 CALL keyword_release(keyword)
2153
2154 CALL keyword_create(keyword, __location__, name="F0", &
2155 description="Defines the f0 parameter of Buckingham+Morse potential", &
2156 usage="F0 {real}", type_of_var=real_t, &
2157 n_var=1, unit_str="K_e*angstrom^-1")
2158 CALL section_add_keyword(section, keyword)
2159 CALL keyword_release(keyword)
2160
2161 CALL keyword_create(keyword, __location__, name="A1", &
2162 description="Defines the A1 parameter of Buckingham+Morse potential", &
2163 usage="A1 {real}", type_of_var=real_t, &
2164 n_var=1, unit_str="angstrom")
2165 CALL section_add_keyword(section, keyword)
2166 CALL keyword_release(keyword)
2167
2168 CALL keyword_create(keyword, __location__, name="A2", &
2169 description="Defines the A2 parameter of Buckingham+Morse potential", &
2170 usage="A2 {real}", type_of_var=real_t, &
2171 n_var=1, unit_str="angstrom")
2172 CALL section_add_keyword(section, keyword)
2173 CALL keyword_release(keyword)
2174
2175 CALL keyword_create(keyword, __location__, name="B1", &
2176 description="Defines the B1 parameter of Buckingham+Morse potential", &
2177 usage="B1 {real}", type_of_var=real_t, &
2178 n_var=1, unit_str="angstrom")
2179 CALL section_add_keyword(section, keyword)
2180 CALL keyword_release(keyword)
2181
2182 CALL keyword_create(keyword, __location__, name="B2", &
2183 description="Defines the B2 parameter of Buckingham+Morse potential", &
2184 usage="B2 {real}", type_of_var=real_t, &
2185 n_var=1, unit_str="angstrom")
2186 CALL section_add_keyword(section, keyword)
2187 CALL keyword_release(keyword)
2188
2189 CALL keyword_create(keyword, __location__, name="C", &
2190 description="Defines the C parameter of Buckingham+Morse potential", &
2191 usage="C {real}", type_of_var=real_t, &
2192 n_var=1, unit_str="K_e*angstrom^6")
2193 CALL section_add_keyword(section, keyword)
2194 CALL keyword_release(keyword)
2195
2196 CALL keyword_create(keyword, __location__, name="D", &
2197 description="Defines the amplitude for the Morse part ", &
2198 usage="D {real}", type_of_var=real_t, &
2199 n_var=1, unit_str="K_e")
2200 CALL section_add_keyword(section, keyword)
2201 CALL keyword_release(keyword)
2202
2203 CALL keyword_create(keyword, __location__, name="R0", &
2204 description="Defines the equilibrium distance for the Morse part ", &
2205 usage="R0 {real}", type_of_var=real_t, &
2206 n_var=1, unit_str="angstrom")
2207 CALL section_add_keyword(section, keyword)
2208 CALL keyword_release(keyword)
2209
2210 CALL keyword_create(keyword, __location__, name="Beta", &
2211 description="Defines the width for the Morse part ", &
2212 usage="Beta {real}", type_of_var=real_t, &
2213 n_var=1, unit_str="angstrom^-1")
2214 CALL section_add_keyword(section, keyword)
2215 CALL keyword_release(keyword)
2216
2217 CALL keyword_create(keyword, __location__, name="RCUT", &
2218 description="Defines the cutoff parameter of the Buckingham potential", &
2219 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, &
2220 unit_str="angstrom"), &
2221 unit_str="angstrom")
2222 CALL section_add_keyword(section, keyword)
2223 CALL keyword_release(keyword)
2224
2225 CALL keyword_create(keyword, __location__, name="RMIN", &
2226 description="Defines the lower bound of the potential. If not set the range is the"// &
2227 " full range generate by the spline", usage="RMIN {real}", &
2228 type_of_var=real_t, unit_str="angstrom")
2229 CALL section_add_keyword(section, keyword)
2230 CALL keyword_release(keyword)
2231
2232 CALL keyword_create(keyword, __location__, name="RMAX", &
2233 description="Defines the upper bound of the potential. If not set the range is the"// &
2234 " full range generate by the spline", usage="RMAX {real}", &
2235 type_of_var=real_t, unit_str="angstrom")
2236 CALL section_add_keyword(section, keyword)
2237 CALL keyword_release(keyword)
2238
2239 END SUBROUTINE create_buckmorse_section
2240
2241! **************************************************************************************************
2242!> \brief This section specifies the input parameters for Tersoff potential type
2243!> (Tersoff, J. PRB 39(8), 5566, 1989)
2244!> \param section ...
2245! **************************************************************************************************
2246 SUBROUTINE create_tersoff_section(section)
2247 TYPE(section_type), POINTER :: section
2248
2249 TYPE(keyword_type), POINTER :: keyword
2250
2251 cpassert(.NOT. ASSOCIATED(section))
2252 CALL section_create(section, __location__, name="TERSOFF", &
2253 description="This section specifies the input parameters for Tersoff potential type.", &
2254 citations=[tersoff1988], n_keywords=1, n_subsections=0, repeats=.true.)
2255
2256 NULLIFY (keyword)
2257
2258 CALL keyword_create(keyword, __location__, name="ATOMS", &
2259 description="Defines the atomic kind involved in the nonbond potential", &
2260 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2261 n_var=2)
2262 CALL section_add_keyword(section, keyword)
2263 CALL keyword_release(keyword)
2264
2265 CALL keyword_create(keyword, __location__, name="A", &
2266 description="Defines the A parameter of Tersoff potential", &
2267 usage="A {real}", type_of_var=real_t, &
2268 default_r_val=cp_unit_to_cp2k(value=1.8308e3_dp, &
2269 unit_str="eV"), &
2270 n_var=1, unit_str="eV")
2271 CALL section_add_keyword(section, keyword)
2272 CALL keyword_release(keyword)
2273
2274 CALL keyword_create(keyword, __location__, name="B", &
2275 description="Defines the B parameter of Tersoff potential", &
2276 usage="B {real}", type_of_var=real_t, &
2277 default_r_val=cp_unit_to_cp2k(value=4.7118e2_dp, &
2278 unit_str="eV"), &
2279 n_var=1, unit_str="eV")
2280 CALL section_add_keyword(section, keyword)
2281 CALL keyword_release(keyword)
2282
2283 CALL keyword_create(keyword, __location__, name="lambda1", &
2284 description="Defines the lambda1 parameter of Tersoff potential", &
2285 usage="lambda1 {real}", type_of_var=real_t, &
2286 default_r_val=cp_unit_to_cp2k(value=2.4799_dp, &
2287 unit_str="angstrom^-1"), &
2288 n_var=1, unit_str="angstrom^-1")
2289 CALL section_add_keyword(section, keyword)
2290 CALL keyword_release(keyword)
2291
2292 CALL keyword_create(keyword, __location__, name="lambda2", &
2293 description="Defines the lambda2 parameter of Tersoff potential", &
2294 usage="lambda2 {real}", type_of_var=real_t, &
2295 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2296 unit_str="angstrom^-1"), &
2297 n_var=1, unit_str="angstrom^-1")
2298 CALL section_add_keyword(section, keyword)
2299 CALL keyword_release(keyword)
2300
2301 CALL keyword_create(keyword, __location__, name="alpha", &
2302 description="Defines the alpha parameter of Tersoff potential", &
2303 usage="alpha {real}", type_of_var=real_t, &
2304 default_r_val=0.0_dp, &
2305 n_var=1)
2306 CALL section_add_keyword(section, keyword)
2307 CALL keyword_release(keyword)
2308
2309 CALL keyword_create(keyword, __location__, name="beta", &
2310 description="Defines the beta parameter of Tersoff potential", &
2311 usage="beta {real}", type_of_var=real_t, &
2312 default_r_val=1.0999e-6_dp, &
2313 n_var=1, unit_str="")
2314 CALL section_add_keyword(section, keyword)
2315 CALL keyword_release(keyword)
2316
2317 CALL keyword_create(keyword, __location__, name="n", &
2318 description="Defines the n parameter of Tersoff potential", &
2319 usage="n {real}", type_of_var=real_t, &
2320 default_r_val=7.8734e-1_dp, &
2321 n_var=1, unit_str="")
2322 CALL section_add_keyword(section, keyword)
2323 CALL keyword_release(keyword)
2324
2325 CALL keyword_create(keyword, __location__, name="c", &
2326 description="Defines the c parameter of Tersoff potential", &
2327 usage="c {real}", type_of_var=real_t, &
2328 default_r_val=1.0039e5_dp, &
2329 n_var=1, unit_str="")
2330 CALL section_add_keyword(section, keyword)
2331 CALL keyword_release(keyword)
2332
2333 CALL keyword_create(keyword, __location__, name="d", &
2334 description="Defines the d parameter of Tersoff potential", &
2335 usage="d {real}", type_of_var=real_t, &
2336 default_r_val=1.6218e1_dp, &
2337 n_var=1, unit_str="")
2338 CALL section_add_keyword(section, keyword)
2339 CALL keyword_release(keyword)
2340
2341 CALL keyword_create(keyword, __location__, name="h", &
2342 description="Defines the h parameter of Tersoff potential", &
2343 usage="h {real}", type_of_var=real_t, &
2344 default_r_val=-5.9826e-1_dp, &
2345 n_var=1, unit_str="")
2346 CALL section_add_keyword(section, keyword)
2347 CALL keyword_release(keyword)
2348
2349 CALL keyword_create(keyword, __location__, name="lambda3", &
2350 description="Defines the lambda3 parameter of Tersoff potential", &
2351 usage="lambda3 {real}", type_of_var=real_t, &
2352 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, &
2353 unit_str="angstrom^-1"), &
2354 n_var=1, unit_str="angstrom^-1")
2355 CALL section_add_keyword(section, keyword)
2356 CALL keyword_release(keyword)
2357
2358 CALL keyword_create(keyword, __location__, name="bigR", &
2359 description="Defines the bigR parameter of Tersoff potential", &
2360 usage="bigR {real}", type_of_var=real_t, &
2361 default_r_val=cp_unit_to_cp2k(value=2.85_dp, &
2362 unit_str="angstrom"), &
2363 n_var=1, unit_str="angstrom")
2364 CALL section_add_keyword(section, keyword)
2365 CALL keyword_release(keyword)
2366
2367 CALL keyword_create(keyword, __location__, name="bigD", &
2368 description="Defines the D parameter of Tersoff potential", &
2369 usage="bigD {real}", type_of_var=real_t, &
2370 default_r_val=cp_unit_to_cp2k(value=0.15_dp, &
2371 unit_str="angstrom"), &
2372 n_var=1, unit_str="angstrom")
2373 CALL section_add_keyword(section, keyword)
2374 CALL keyword_release(keyword)
2375
2376 CALL keyword_create(keyword, __location__, name="RCUT", &
2377 description="Defines the cutoff parameter of the tersoff potential."// &
2378 " This parameter is in principle already defined by the values of"// &
2379 " bigD and bigR. But it is necessary to define it when using the tersoff"// &
2380 " in conjunction with other potentials (for the same atomic pair) in order to have"// &
2381 " the same consistent definition of RCUT for all potentials.", &
2382 usage="RCUT {real}", type_of_var=real_t, &
2383 n_var=1, unit_str="angstrom")
2384 CALL section_add_keyword(section, keyword)
2385 CALL keyword_release(keyword)
2386
2387 END SUBROUTINE create_tersoff_section
2388
2389! **************************************************************************************************
2390!> \brief This section specifies the input parameters for Siepmann-Sprik
2391!> potential type
2392!> (Siepmann and Sprik, J. Chem. Phys. 102(1) 511, 1995)
2393!> \param section ...
2394! **************************************************************************************************
2395 SUBROUTINE create_siepmann_section(section)
2396 TYPE(section_type), POINTER :: section
2397
2398 TYPE(keyword_type), POINTER :: keyword
2399
2400 cpassert(.NOT. ASSOCIATED(section))
2401 CALL section_create(section, __location__, name="SIEPMANN", &
2402 description="This section specifies the input parameters for the"// &
2403 " Siepmann-Sprik potential type. Consists of 4 terms:"// &
2404 " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// &
2405 " have to be given via the GENPOT section. The terms T3+T4"// &
2406 " are obtained from the SIEPMANN section. The Siepmann-Sprik"// &
2407 " potential is designed for water-metal chemisorption.", &
2408 citations=[siepmann1995], n_keywords=1, n_subsections=0, repeats=.true.)
2409
2410 NULLIFY (keyword)
2411
2412 CALL keyword_create(keyword, __location__, name="ATOMS", &
2413 description="Defines the atomic kind involved in the nonbond potential", &
2414 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2415 n_var=2)
2416 CALL section_add_keyword(section, keyword)
2417 CALL keyword_release(keyword)
2418
2419 CALL keyword_create(keyword, __location__, name="B", &
2420 description="Defines the B parameter of Siepmann potential", &
2421 usage="B {real}", type_of_var=real_t, &
2422 default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2423 unit_str="angstrom"), &
2424 n_var=1, unit_str="angstrom")
2425 CALL section_add_keyword(section, keyword)
2426 CALL keyword_release(keyword)
2427
2428 CALL keyword_create(keyword, __location__, name="D", &
2429 description="Defines the D parameter of Siepmann potential", &
2430 usage="D {real}", type_of_var=real_t, &
2431 default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2432 unit_str="internal_cp2k"), &
2433 n_var=1, unit_str="internal_cp2k")
2434 CALL section_add_keyword(section, keyword)
2435 CALL keyword_release(keyword)
2436
2437 CALL keyword_create(keyword, __location__, name="E", &
2438 description="Defines the E parameter of Siepmann potential", &
2439 usage="E {real}", type_of_var=real_t, &
2440 default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2441 unit_str="internal_cp2k"), &
2442 n_var=1, unit_str="internal_cp2k")
2443 CALL section_add_keyword(section, keyword)
2444 CALL keyword_release(keyword)
2445
2446 CALL keyword_create(keyword, __location__, name="F", &
2447 description="Defines the F parameter of Siepmann potential", &
2448 usage="F {real}", type_of_var=real_t, &
2449 default_r_val=13.3_dp, n_var=1)
2450 CALL section_add_keyword(section, keyword)
2451 CALL keyword_release(keyword)
2452!
2453 CALL keyword_create(keyword, __location__, name="beta", &
2454 description="Defines the beta parameter of Siepmann potential", &
2455 usage="beta {real}", type_of_var=real_t, &
2456 default_r_val=10.0_dp, n_var=1)
2457 CALL section_add_keyword(section, keyword)
2458 CALL keyword_release(keyword)
2459!
2460 CALL keyword_create(keyword, __location__, name="RCUT", &
2461 description="Defines the cutoff parameter of Siepmann potential", &
2462 usage="RCUT {real}", type_of_var=real_t, &
2463 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2464 unit_str="angstrom"), &
2465 n_var=1, unit_str="angstrom")
2466 CALL section_add_keyword(section, keyword)
2467 CALL keyword_release(keyword)
2468!
2469 CALL keyword_create(keyword, __location__, name="ALLOW_OH_FORMATION", &
2470 description=" The Siepmann-Sprik potential is actually designed for intact"// &
2471 " water molecules only. If water is treated at the QM level,"// &
2472 " water molecules can potentially dissociate, i.e."// &
2473 " some O-H bonds might be stretched leading temporarily"// &
2474 " to the formation of OH- ions. This keyword allows the"// &
2475 " the formation of such ions. The T3 term (dipole term)"// &
2476 " is then switched off for evaluating the interaction"// &
2477 " between the OH- ion and the metal.", &
2478 usage="ALLOW_OH_FORMATION TRUE", &
2479 default_l_val=.false., lone_keyword_l_val=.true.)
2480 CALL section_add_keyword(section, keyword)
2481 CALL keyword_release(keyword)
2482
2483 CALL keyword_create(keyword, __location__, name="ALLOW_H3O_FORMATION", &
2484 description=" The Siepmann-Sprik potential is designed for intact water"// &
2485 " molecules only. If water is treated at the QM level"// &
2486 " and an acid is present, hydronium ions might occur."// &
2487 " This keyword allows the formation of hydronium ions."// &
2488 " The T3 term (dipole term) is switched off for evaluating"// &
2489 " the interaction between hydronium and the metal.", &
2490 usage="ALLOW_H3O_FORMATION TRUE", &
2491 default_l_val=.false., lone_keyword_l_val=.true.)
2492 CALL section_add_keyword(section, keyword)
2493 CALL keyword_release(keyword)
2494
2495 CALL keyword_create(keyword, __location__, name="ALLOW_O_FORMATION", &
2496 description=" The Siepmann-Sprik potential is actually designed for intact"// &
2497 " water molecules only. If water is treated at the QM level,"// &
2498 " water molecules can potentially dissociate, i.e."// &
2499 " some O-H bonds might be stretched leading temporarily"// &
2500 " to the formation of O^2- ions. This keyword allows the"// &
2501 " the formation of such ions. The T3 term (dipole term)"// &
2502 " is then switched off for evaluating the interaction"// &
2503 " between the O^2- ion and the metal.", &
2504 usage="ALLOW_O_FORMATION .TRUE.", &
2505 default_l_val=.false., lone_keyword_l_val=.true.)
2506 CALL section_add_keyword(section, keyword)
2507 CALL keyword_release(keyword)
2508
2509 END SUBROUTINE create_siepmann_section
2510
2511! **************************************************************************************************
2512!> \brief This section specifies the input parameters for GAL19
2513!> potential type
2514!> (??)
2515!> \param section ...
2516! **************************************************************************************************
2517 SUBROUTINE create_gal_section(section)
2518 TYPE(section_type), POINTER :: section
2519
2520 TYPE(keyword_type), POINTER :: keyword
2521 TYPE(section_type), POINTER :: subsection
2522
2523 cpassert(.NOT. ASSOCIATED(section))
2524 CALL section_create(section, __location__, name="GAL19", &
2525 description="Implementation of the GAL19 forcefield, see associated paper", &
2526 citations=[clabaut2020], n_keywords=1, n_subsections=1, repeats=.true.)
2527
2528 NULLIFY (keyword, subsection)
2529
2530 CALL keyword_create(keyword, __location__, name="ATOMS", &
2531 description="Defines the atomic kind involved in the nonbond potential", &
2532 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2533 n_var=2)
2534 CALL section_add_keyword(section, keyword)
2535 CALL keyword_release(keyword)
2536
2537 CALL keyword_create(keyword, __location__, name="METALS", &
2538 description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2539 usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2540 n_var=2)
2541 CALL section_add_keyword(section, keyword)
2542 CALL keyword_release(keyword)
2543
2544 CALL keyword_create(keyword, __location__, name="epsilon", &
2545 description="Defines the epsilon_a parameter of GAL19 potential", &
2546 usage="epsilon {real}", type_of_var=real_t, &
2547 default_r_val=cp_unit_to_cp2k(value=0.6_dp, &
2548 unit_str="kcalmol"), &
2549 n_var=1, unit_str="kcalmol")
2550 CALL section_add_keyword(section, keyword)
2551 CALL keyword_release(keyword)
2552
2553 CALL keyword_create(keyword, __location__, name="bxy", &
2554 description="Defines the b perpendicular parameter of GAL19 potential", &
2555 usage="bxy {real}", type_of_var=real_t, &
2556 default_r_val=cp_unit_to_cp2k(value=3.688388_dp, &
2557 unit_str="internal_cp2k"), &
2558 n_var=1, unit_str="angstrom^-2")
2559 CALL section_add_keyword(section, keyword)
2560 CALL keyword_release(keyword)
2561
2562 CALL keyword_create(keyword, __location__, name="bz", &
2563 description="Defines the b parallel parameter of GAL19 potential", &
2564 usage="bz {real}", type_of_var=real_t, &
2565 default_r_val=cp_unit_to_cp2k(value=9.069025_dp, &
2566 unit_str="internal_cp2k"), &
2567 n_var=1, unit_str="angstrom^-2")
2568 CALL section_add_keyword(section, keyword)
2569 CALL keyword_release(keyword)
2570
2571 CALL keyword_create(keyword, __location__, name="r", &
2572 description="Defines the R_0 parameters of GAL19 potential for the two METALS. "// &
2573 "This is the only parameter that is shared between the two section of the "// &
2574 "forcefield in the case of two metals (alloy). "// &
2575 "If one metal only is present, a second number should be given but won't be read", &
2576 usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2577 CALL section_add_keyword(section, keyword)
2578 CALL keyword_release(keyword)
2579
2580 CALL keyword_create(keyword, __location__, name="a1", &
2581 description="Defines the a1 parameter of GAL19 potential", &
2582 usage="a1 {real}", type_of_var=real_t, &
2583 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2584 CALL section_add_keyword(section, keyword)
2585 CALL keyword_release(keyword)
2586
2587 CALL keyword_create(keyword, __location__, name="a2", &
2588 description="Defines the a2 parameter of GAL19 potential", &
2589 usage="a2 {real}", type_of_var=real_t, &
2590 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2591 CALL section_add_keyword(section, keyword)
2592 CALL keyword_release(keyword)
2593
2594 CALL keyword_create(keyword, __location__, name="a3", &
2595 description="Defines the a3 parameter of GAL19 potential", &
2596 usage="a3 {real}", type_of_var=real_t, &
2597 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2598 CALL section_add_keyword(section, keyword)
2599 CALL keyword_release(keyword)
2600
2601 CALL keyword_create(keyword, __location__, name="a4", &
2602 description="Defines the a4 parameter of GAL19 potential", &
2603 usage="a4 {real}", type_of_var=real_t, &
2604 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2605 CALL section_add_keyword(section, keyword)
2606 CALL keyword_release(keyword)
2607
2608 CALL keyword_create(keyword, __location__, name="A", &
2609 description="Defines the A parameter of GAL19 potential", &
2610 usage="A {real}", type_of_var=real_t, &
2611 default_r_val=10.0_dp, n_var=1, unit_str="kcalmol")
2612 CALL section_add_keyword(section, keyword)
2613 CALL keyword_release(keyword)
2614
2615 CALL keyword_create(keyword, __location__, name="B", &
2616 description="Defines the B parameter of GAL19 potential", &
2617 usage="B {real}", type_of_var=real_t, &
2618 default_r_val=10.0_dp, n_var=1, unit_str="angstrom^-1")
2619 CALL section_add_keyword(section, keyword)
2620 CALL keyword_release(keyword)
2621
2622 CALL keyword_create(keyword, __location__, name="C", &
2623 description="Defines the C parameter of GAL19 potential", &
2624 usage="C {real}", type_of_var=real_t, &
2625 default_r_val=10.0_dp, n_var=1, unit_str="angstrom^6*kcalmol")
2626 CALL section_add_keyword(section, keyword)
2627 CALL keyword_release(keyword)
2628
2629 CALL keyword_create(keyword, __location__, name="RCUT", &
2630 description="Defines the cutoff parameter of GAL19 potential", &
2631 usage="RCUT {real}", type_of_var=real_t, &
2632 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2633 unit_str="angstrom"), &
2634 n_var=1, unit_str="angstrom")
2635 CALL section_add_keyword(section, keyword)
2636 CALL keyword_release(keyword)
2637 CALL keyword_create(keyword, __location__, name="Fit_express", &
2638 description="Demands the particular output needed to a least square fit", &
2639 usage="Fit_express TRUE", &
2640 default_l_val=.false., lone_keyword_l_val=.true.)
2641 CALL section_add_keyword(section, keyword)
2642 CALL keyword_release(keyword)
2643 CALL create_gcn_section(subsection)
2644 CALL section_add_subsection(section, subsection)
2645 CALL section_release(subsection)
2646
2647 END SUBROUTINE create_gal_section
2648
2649! **************************************************************************************************
2650!> \brief This section specifies the input parameters for GAL21
2651!> potential type
2652!> (??)
2653!> \param section ...
2654! **************************************************************************************************
2655 SUBROUTINE create_gal21_section(section)
2656 TYPE(section_type), POINTER :: section
2657
2658 TYPE(keyword_type), POINTER :: keyword
2659 TYPE(section_type), POINTER :: subsection
2660
2661 cpassert(.NOT. ASSOCIATED(section))
2662 CALL section_create(section, __location__, name="GAL21", &
2663 description="Implementation of the GAL21 forcefield, see associated paper", &
2664 citations=[clabaut2021], n_keywords=1, n_subsections=1, repeats=.true.)
2665
2666 NULLIFY (keyword, subsection)
2667
2668 CALL keyword_create(keyword, __location__, name="ATOMS", &
2669 description="Defines the atomic kind involved in the nonbond potential", &
2670 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2671 n_var=2)
2672 CALL section_add_keyword(section, keyword)
2673 CALL keyword_release(keyword)
2674
2675 CALL keyword_create(keyword, __location__, name="METALS", &
2676 description="Defines the two atomic kinds to be considered as part of the metallic phase in the system", &
2677 usage="METALS {KIND1} {KIND2} ..", type_of_var=char_t, &
2678 n_var=2)
2679 CALL section_add_keyword(section, keyword)
2680 CALL keyword_release(keyword)
2681
2682 CALL keyword_create(keyword, __location__, name="epsilon", &
2683 description="Defines the epsilon parameter of GAL21 potential", &
2684 usage="epsilon {real} {real} {real}", type_of_var=real_t, &
2685 n_var=3, unit_str="kcalmol")
2686 CALL section_add_keyword(section, keyword)
2687 CALL keyword_release(keyword)
2688
2689 CALL keyword_create(keyword, __location__, name="bxy", &
2690 description="Defines the b perpendicular parameter of GAL21 potential", &
2691 usage="bxy {real} {real}", type_of_var=real_t, &
2692 n_var=2, unit_str="angstrom^-2")
2693 CALL section_add_keyword(section, keyword)
2694 CALL keyword_release(keyword)
2695
2696 CALL keyword_create(keyword, __location__, name="bz", &
2697 description="Defines the b parallel parameter of GAL21 potential", &
2698 usage="bz {real} {real}", type_of_var=real_t, &
2699 n_var=2, unit_str="angstrom^-2")
2700 CALL section_add_keyword(section, keyword)
2701 CALL keyword_release(keyword)
2702
2703 CALL keyword_create(keyword, __location__, name="r", &
2704 description="Defines the R_0 parameters of GAL21 potential for the two METALS. "// &
2705 "This is the only parameter that is shared between the two section of "// &
2706 "the forcefield in the case of two metals (alloy). "// &
2707 "If one metal only is present, a second number should be given but won't be read", &
2708 usage="r {real} {real}", type_of_var=real_t, n_var=2, unit_str="angstrom")
2709 CALL section_add_keyword(section, keyword)
2710 CALL keyword_release(keyword)
2711
2712 CALL keyword_create(keyword, __location__, name="a1", &
2713 description="Defines the a1 parameter of GAL21 potential", &
2714 usage="a1 {real} {real} {real}", type_of_var=real_t, &
2715 n_var=3, unit_str="kcalmol")
2716 CALL section_add_keyword(section, keyword)
2717 CALL keyword_release(keyword)
2718
2719 CALL keyword_create(keyword, __location__, name="a2", &
2720 description="Defines the a2 parameter of GAL21 potential", &
2721 usage="a2 {real} {real} {real}", type_of_var=real_t, &
2722 n_var=3, unit_str="kcalmol")
2723 CALL section_add_keyword(section, keyword)
2724 CALL keyword_release(keyword)
2725
2726 CALL keyword_create(keyword, __location__, name="a3", &
2727 description="Defines the a3 parameter of GAL21 potential", &
2728 usage="a3 {real} {real} {real}", type_of_var=real_t, &
2729 n_var=3, unit_str="kcalmol")
2730 CALL section_add_keyword(section, keyword)
2731 CALL keyword_release(keyword)
2732
2733 CALL keyword_create(keyword, __location__, name="a4", &
2734 description="Defines the a4 parameter of GAL21 potential", &
2735 usage="a4 {real} {real} {real}", type_of_var=real_t, &
2736 n_var=3, unit_str="kcalmol")
2737 CALL section_add_keyword(section, keyword)
2738 CALL keyword_release(keyword)
2739
2740 CALL keyword_create(keyword, __location__, name="A", &
2741 description="Defines the A parameter of GAL21 potential", &
2742 usage="A {real} {real}", type_of_var=real_t, &
2743 n_var=2, unit_str="kcalmol")
2744 CALL section_add_keyword(section, keyword)
2745 CALL keyword_release(keyword)
2746
2747 CALL keyword_create(keyword, __location__, name="B", &
2748 description="Defines the B parameter of GAL21 potential", &
2749 usage="B {real} {real}", type_of_var=real_t, &
2750 n_var=2, unit_str="angstrom^-1")
2751 CALL section_add_keyword(section, keyword)
2752 CALL keyword_release(keyword)
2753
2754 CALL keyword_create(keyword, __location__, name="C", &
2755 description="Defines the C parameter of GAL21 potential", &
2756 usage="C {real}", type_of_var=real_t, &
2757 n_var=1, unit_str="angstrom^6*kcalmol")
2758 CALL section_add_keyword(section, keyword)
2759 CALL keyword_release(keyword)
2760
2761 CALL keyword_create(keyword, __location__, name="AH", &
2762 description="Defines the AH parameter of GAL21 potential", &
2763 usage="AH {real} {real}", type_of_var=real_t, &
2764 n_var=2, unit_str="kcalmol")
2765 CALL section_add_keyword(section, keyword)
2766 CALL keyword_release(keyword)
2767
2768 CALL keyword_create(keyword, __location__, name="BH", &
2769 description="Defines the BH parameter of GAL21 potential", &
2770 usage="BH {real} {real}", type_of_var=real_t, &
2771 n_var=2, unit_str="angstrom^-1")
2772 CALL section_add_keyword(section, keyword)
2773 CALL keyword_release(keyword)
2774
2775 CALL keyword_create(keyword, __location__, name="RCUT", &
2776 description="Defines the cutoff parameter of GAL21 potential", &
2777 usage="RCUT {real}", type_of_var=real_t, &
2778 default_r_val=cp_unit_to_cp2k(value=3.2_dp, &
2779 unit_str="angstrom"), &
2780 n_var=1, unit_str="angstrom")
2781 CALL section_add_keyword(section, keyword)
2782 CALL keyword_release(keyword)
2783
2784 CALL keyword_create(keyword, __location__, name="Fit_express", &
2785 description="Demands the particular output needed to a least square fit", &
2786 usage="Fit_express TRUE", &
2787 default_l_val=.false., lone_keyword_l_val=.true.)
2788 CALL section_add_keyword(section, keyword)
2789 CALL keyword_release(keyword)
2790
2791 CALL create_gcn_section(subsection)
2792 CALL section_add_subsection(section, subsection)
2793 CALL section_release(subsection)
2794
2795 END SUBROUTINE create_gal21_section
2796
2797! **************************************************************************************************
2798!> \brief This section specifies the input parameters for TABPOT potential type
2799!> \param section the section to create
2800!> \author teo, Alex Mironenko, Da Teng
2801! **************************************************************************************************
2802 SUBROUTINE create_tabpot_section(section)
2803
2804 TYPE(section_type), POINTER :: section
2805
2806 TYPE(keyword_type), POINTER :: keyword
2807
2808 cpassert(.NOT. ASSOCIATED(section))
2809
2810 CALL section_create(section, __location__, name="TABPOT", &
2811 description="This section specifies the input parameters for TABPOT potential type.", &
2812 n_keywords=1, n_subsections=0, repeats=.true.)
2813
2814 NULLIFY (keyword)
2815 CALL keyword_create(keyword, __location__, name="ATOMS", &
2816 description="Defines the atomic kind involved", &
2817 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, &
2818 n_var=2)
2819 CALL section_add_keyword(section, keyword)
2820 CALL keyword_release(keyword)
2821
2822 CALL keyword_create(keyword, __location__, name="PARM_FILE_NAME", &
2823 variants=["PARMFILE"], &
2824 description="Specifies the filename that contains the tabulated NONBONDED potential. "// &
2825 "File structure: the third line of the potential file contains a title. "// &
2826 "The 4th line contains: 'N', number of data points, 'R', lower bound of distance, distance cutoff. "// &
2827 "Follow "// &
2828 "in order npoints lines for index, distance [A], energy [kcal/mol], and force [kcal/mol/A]", &
2829 usage="PARM_FILE_NAME {FILENAME}", default_lc_val="")
2830 CALL section_add_keyword(section, keyword)
2831 CALL keyword_release(keyword)
2832
2833 END SUBROUTINE create_tabpot_section
2834
2835! **************************************************************************************************
2836!> \brief This section specifies the input parameters for the subsection GCN of GAL19 and GAL21
2837!> potential type
2838!> (??)
2839!> \param section ...
2840! **************************************************************************************************
2841 SUBROUTINE create_gcn_section(section)
2842 TYPE(section_type), POINTER :: section
2843
2844 TYPE(keyword_type), POINTER :: keyword
2845
2846 cpassert(.NOT. ASSOCIATED(section))
2847 CALL section_create(section, __location__, name="GCN", &
2848 description="Allow to specify the generalized coordination number of the atoms. "// &
2849 "Those numbers msust be generated by another program ", &
2850 n_keywords=1, n_subsections=0, repeats=.false.)
2851
2852 NULLIFY (keyword)
2853 CALL keyword_create(keyword, __location__, name="_DEFAULT_KEYWORD_", &
2854 description="Value of the GCN for the individual atom. Order MUST reflect"// &
2855 " the one specified for the geometry.", repeats=.true., usage="{Real}", &
2856 default_r_val=0.0_dp, type_of_var=real_t)
2857 CALL section_add_keyword(section, keyword)
2858 CALL keyword_release(keyword)
2859
2860 END SUBROUTINE create_gcn_section
2861
2862! **************************************************************************************************
2863!> \brief creates the input section for the qs part
2864!> \param print_key ...
2865!> \param label ...
2866!> \param print_level ...
2867!> \author teo
2868! **************************************************************************************************
2869 SUBROUTINE create_dipoles_section(print_key, label, print_level)
2870 TYPE(section_type), POINTER :: print_key
2871 CHARACTER(LEN=*), INTENT(IN) :: label
2872 INTEGER, INTENT(IN) :: print_level
2873
2874 TYPE(keyword_type), POINTER :: keyword
2875
2876 cpassert(.NOT. ASSOCIATED(print_key))
2877 CALL cp_print_key_section_create(print_key, __location__, name=trim(label), &
2878 description="Section controlling the calculation of "//trim(label)//"."// &
2879 " Note that the result in the periodic case might be defined modulo a certain period,"// &
2880 " determined by the lattice vectors. During MD, this can lead to jumps.", &
2881 print_level=print_level, filename="__STD_OUT__")
2882
2883 NULLIFY (keyword)
2884 CALL keyword_create(keyword, __location__, &
2885 name="PERIODIC", &
2886 description="Use Berry phase formula (PERIODIC=T) or simple operator (PERIODIC=F). "// &
2887 "The latter normally requires that the CELL is periodic NONE.", &
2888 usage="PERIODIC {logical}", &
2889 repeats=.false., &
2890 n_var=1, &
2891 default_l_val=.true., lone_keyword_l_val=.true.)
2892 CALL section_add_keyword(print_key, keyword)
2893 CALL keyword_release(keyword)
2894
2895 CALL keyword_create(keyword, __location__, name="REFERENCE", &
2896 variants=s2a("REF"), &
2897 description="Define the reference point for the calculation of the electrostatic moment.", &
2898 usage="REFERENCE COM", &
2899 enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), &
2900 enum_desc=s2a("Use Center of Mass", &
2901 "Use Center of Atomic Charges", &
2902 "Use User Defined Point (Keyword:REF_POINT)", &
2903 "Use Origin of Coordinate System"), &
2904 enum_i_vals=[use_mom_ref_com, &
2908 default_i_val=use_mom_ref_zero)
2909 CALL section_add_keyword(print_key, keyword)
2910 CALL keyword_release(keyword)
2911
2912 CALL keyword_create(keyword, __location__, name="REFERENCE_POINT", &
2913 variants=s2a("REF_POINT"), &
2914 description="Fixed reference point for the calculations of the electrostatic moment.", &
2915 usage="REFERENCE_POINT x y z", &
2916 repeats=.false., &
2917 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
2918 type_of_var=real_t, &
2919 unit_str='bohr')
2920 CALL section_add_keyword(print_key, keyword)
2921 CALL keyword_release(keyword)
2922 END SUBROUTINE create_dipoles_section
2923
2924END 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 lysogorskiy2021
integer, save, public tersoff1988
integer, save, public dick1958
integer, save, public foiles1986
integer, save, public devynck2012
integer, save, public tosi1964a
integer, save, public bochkarev2024
integer, save, public siepmann1995
integer, save, public zeng2023
integer, save, public yamada2000
integer, save, public tan2025
integer, save, public batzner2022
integer, save, public mitchell1993
integer, save, public musaelian2023
integer, save, public clabaut2021
integer, save, public wang2018
integer, save, public clabaut2020
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
integer, parameter, public low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public silent_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
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:1149
Define all structure types related to force field kinds.
integer, parameter, public do_ff_legendre
integer, parameter, public do_ff_undef
integer, parameter, public do_ff_mm4
integer, parameter, public do_ff_charmm
integer, parameter, public do_ff_mm3
integer, parameter, public do_ff_g87
integer, parameter, public do_ff_g96
integer, parameter, public do_ff_morse
integer, parameter, public do_ff_mm2
integer, parameter, public do_ff_harmonic
integer, parameter, public do_ff_amber
integer, parameter, public do_ff_mixed_bend_stretch
integer, parameter, public do_ff_cubic
integer, parameter, public do_ff_quartic
integer, parameter, public do_ff_fues
integer, parameter, public do_ff_opls
This public domain function parser module is intended for applications where a set of mathematical ex...
Definition fparser.F:17
character(len=:) function, allocatable, public docf()
...
Definition fparser.F:1151
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