1!--------------------------------------------------------------------------------------------------! 2! CP2K: A general program to perform molecular dynamics simulations ! 3! Copyright (C) 2000 - 2020 CP2K developers group ! 4!--------------------------------------------------------------------------------------------------! 5 6! ************************************************************************************************** 7!> \brief creates the mm section of the input 8!> \note 9!> moved out of input_cp2k 10!> \par History 11!> 04.2004 created 12!> \author fawzi 13! ************************************************************************************************** 14MODULE input_cp2k_mm 15 USE bibliography, ONLY: & 16 Devynck2012, Dick1958, Foiles1986, Mitchell1993, QUIP_ref, Siepmann1995, Tersoff1988, & 17 Tosi1964a, Tosi1964b, Yamada2000 18 USE cp_output_handling, ONLY: cp_print_key_section_create,& 19 debug_print_level,& 20 high_print_level,& 21 low_print_level,& 22 medium_print_level,& 23 silent_print_level 24 USE cp_units, ONLY: cp_unit_to_cp2k 25 USE force_field_kind_types, ONLY: & 26 do_ff_amber, do_ff_charmm, do_ff_cubic, do_ff_fues, do_ff_g87, do_ff_g96, do_ff_harmonic, & 27 do_ff_legendre, do_ff_mixed_bend_stretch, do_ff_mm2, do_ff_mm3, do_ff_mm4, do_ff_morse, & 28 do_ff_opls, do_ff_quartic, do_ff_undef 29 USE input_constants, ONLY: use_mom_ref_coac,& 30 use_mom_ref_com,& 31 use_mom_ref_user,& 32 use_mom_ref_zero 33 USE input_cp2k_field, ONLY: create_per_efield_section 34 USE input_cp2k_poisson, ONLY: create_poisson_section 35 USE input_keyword_types, ONLY: keyword_create,& 36 keyword_release,& 37 keyword_type 38 USE input_section_types, ONLY: section_add_keyword,& 39 section_add_subsection,& 40 section_create,& 41 section_release,& 42 section_type 43 USE input_val_types, ONLY: char_t,& 44 integer_t,& 45 lchar_t,& 46 real_t 47 USE kinds, ONLY: default_string_length,& 48 dp 49 USE string_utilities, ONLY: s2a 50#include "./base/base_uses.f90" 51 52 IMPLICIT NONE 53 PRIVATE 54 55 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .TRUE. 56 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_mm' 57 58 PUBLIC :: create_mm_section, create_dipoles_section 59 PUBLIC :: create_NONBONDED14_section, create_LJ_section, create_Williams_section, & 60 create_Goodwin_section, & 61 create_GENPOT_section, create_neighbor_lists_section 62 PUBLIC :: create_CHARGE_section 63!*** 64CONTAINS 65 66! ************************************************************************************************** 67!> \brief Create the input section for FIST.. Come on.. Let's get woohooo 68!> \param section the section to create 69!> \author teo 70! ************************************************************************************************** 71 SUBROUTINE create_mm_section(section) 72 TYPE(section_type), POINTER :: section 73 74 CHARACTER(len=*), PARAMETER :: routineN = 'create_mm_section', & 75 routineP = moduleN//':'//routineN 76 77 TYPE(section_type), POINTER :: subsection 78 79 CPASSERT(.NOT. ASSOCIATED(section)) 80 CALL section_create(section, __LOCATION__, name="mm", & 81 description="This section contains all information to run a MM calculation.", & 82 n_keywords=5, n_subsections=0, repeats=.FALSE.) 83 84 NULLIFY (subsection) 85 86 CALL create_forcefield_section(subsection) 87 CALL section_add_subsection(section, subsection) 88 CALL section_release(subsection) 89 90 CALL create_neighbor_lists_section(subsection) 91 CALL section_add_subsection(section, subsection) 92 CALL section_release(subsection) 93 94 CALL create_poisson_section(subsection) 95 CALL section_add_subsection(section, subsection) 96 CALL section_release(subsection) 97 98 CALL create_per_efield_section(subsection) 99 CALL section_add_subsection(section, subsection) 100 CALL section_release(subsection) 101 102 CALL create_print_mm_section(subsection) 103 CALL section_add_subsection(section, subsection) 104 CALL section_release(subsection) 105 106 END SUBROUTINE create_mm_section 107 108! ************************************************************************************************** 109!> \brief Create the print mm section 110!> \param section the section to create 111!> \author teo 112! ************************************************************************************************** 113 SUBROUTINE create_print_mm_section(section) 114 TYPE(section_type), POINTER :: section 115 116 CHARACTER(len=*), PARAMETER :: routineN = 'create_print_mm_section', & 117 routineP = moduleN//':'//routineN 118 119 TYPE(keyword_type), POINTER :: keyword 120 TYPE(section_type), POINTER :: print_key 121 122 CPASSERT(.NOT. ASSOCIATED(section)) 123 CALL section_create(section, __LOCATION__, name="print", & 124 description="Section of possible print options in MM code.", & 125 n_keywords=0, n_subsections=1, repeats=.FALSE.) 126 127 NULLIFY (print_key, keyword) 128 129 CALL cp_print_key_section_create(print_key, __LOCATION__, "DERIVATIVES", & 130 description="Controls the printing of derivatives.", & 131 print_level=high_print_level, filename="__STD_OUT__") 132 CALL section_add_subsection(section, print_key) 133 CALL section_release(print_key) 134 135 CALL cp_print_key_section_create(print_key, __LOCATION__, "EWALD_INFO", & 136 description="Controls the printing of Ewald energy components during the "// & 137 "evaluation of the electrostatics.", & 138 print_level=high_print_level, filename="__STD_OUT__") 139 CALL section_add_subsection(section, print_key) 140 CALL section_release(print_key) 141 142 CALL create_dipoles_section(print_key, "DIPOLE", medium_print_level) 143 CALL section_add_subsection(section, print_key) 144 CALL section_release(print_key) 145 146 CALL cp_print_key_section_create(print_key, __LOCATION__, "NEIGHBOR_LISTS", & 147 description="Activates the printing of the neighbor lists.", & 148 print_level=high_print_level, filename="", unit_str="angstrom") 149 CALL section_add_subsection(section, print_key) 150 CALL section_release(print_key) 151 152 CALL cp_print_key_section_create(print_key, __LOCATION__, "ITER_INFO", & 153 description="Activates the printing of iteration info during the self-consistent "// & 154 "calculation of a polarizable forcefield.", & 155 print_level=medium_print_level, filename="__STD_OUT__") 156 CALL section_add_subsection(section, print_key) 157 CALL section_release(print_key) 158 159 CALL cp_print_key_section_create(print_key, __LOCATION__, "SUBCELL", & 160 description="Activates the printing of the subcells used for the"// & 161 "generation of neighbor lists.", & 162 print_level=high_print_level, filename="__STD_OUT__") 163 CALL section_add_subsection(section, print_key) 164 CALL section_release(print_key) 165 166 CALL cp_print_key_section_create(print_key, __LOCATION__, "PROGRAM_BANNER", & 167 description="Controls the printing of the banner of the MM program", & 168 print_level=silent_print_level, filename="__STD_OUT__") 169 CALL section_add_subsection(section, print_key) 170 CALL section_release(print_key) 171 172 CALL cp_print_key_section_create(print_key, __LOCATION__, "PROGRAM_RUN_INFO", & 173 description="Controls the printing of information regarding the run.", & 174 print_level=low_print_level, filename="__STD_OUT__") 175 CALL section_add_subsection(section, print_key) 176 CALL section_release(print_key) 177 178 CALL cp_print_key_section_create(print_key, __LOCATION__, "FF_PARAMETER_FILE", description= & 179 "Controls the printing of Force Field parameter file", & 180 print_level=debug_print_level + 1, filename="", common_iter_levels=2) 181 CALL section_add_subsection(section, print_key) 182 CALL section_release(print_key) 183 184 CALL cp_print_key_section_create(print_key, __LOCATION__, "FF_INFO", description= & 185 "Controls the printing of information in the forcefield settings", & 186 print_level=high_print_level, filename="__STD_OUT__") 187 188 CALL keyword_create(keyword, __LOCATION__, name="spline_info", & 189 description="if the printkey is active prints information regarding the splines"// & 190 " used in the nonbonded interactions", & 191 default_l_val=.TRUE., lone_keyword_l_val=.TRUE.) 192 CALL section_add_keyword(print_key, keyword) 193 CALL keyword_release(keyword) 194 195 CALL keyword_create(keyword, __LOCATION__, name="spline_data", & 196 description="if the printkey is active prints on separated files the splined function"// & 197 " together with the reference one. Useful to check the spline behavior.", & 198 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 199 CALL section_add_keyword(print_key, keyword) 200 CALL keyword_release(keyword) 201 202 CALL section_add_subsection(section, print_key) 203 CALL section_release(print_key) 204 205 END SUBROUTINE create_print_mm_section 206 207! ************************************************************************************************** 208!> \brief Create the forcefield section. This section is useful to set up the 209!> proper force_field for FIST calculations 210!> \param section the section to create 211!> \author teo 212! ************************************************************************************************** 213 SUBROUTINE create_forcefield_section(section) 214 TYPE(section_type), POINTER :: section 215 216 CHARACTER(len=*), PARAMETER :: routineN = 'create_forcefield_section', & 217 routineP = moduleN//':'//routineN 218 219 TYPE(keyword_type), POINTER :: keyword 220 TYPE(section_type), POINTER :: subsection 221 222 CPASSERT(.NOT. ASSOCIATED(section)) 223 CALL section_create(section, __LOCATION__, name="FORCEFIELD", & 224 description="Section specifying information regarding how to set up properly"// & 225 " a force_field for the classical calculations.", & 226 n_keywords=2, n_subsections=2, repeats=.FALSE.) 227 228 NULLIFY (subsection, keyword) 229 230 CALL keyword_create( & 231 keyword, __LOCATION__, name="PARMTYPE", & 232 description="Define the kind of torsion potential", & 233 usage="PARMTYPE {OFF,CHM,G87,G96}", & 234 enum_c_vals=s2a("OFF", "CHM", "G87", "G96", "AMBER"), & 235 enum_desc=s2a("Provides force field parameters through the input file", & 236 "Provides force field parameters through an external file with CHARMM format", & 237 "Provides force field parameters through an external file with GROMOS 87 format", & 238 "Provides force field parameters through an external file with GROMOS 96 format", & 239 "Provides force field parameters through an external file with AMBER format (from v.8 on)"), & 240 enum_i_vals=(/do_ff_undef, & 241 do_ff_charmm, & 242 do_ff_g87, & 243 do_ff_g96, & 244 do_ff_amber/), & 245 default_i_val=do_ff_undef) 246 CALL section_add_keyword(section, keyword) 247 CALL keyword_release(keyword) 248 249 CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", & 250 description="Specifies the filename that contains the parameters of the FF.", & 251 usage="PARM_FILE_NAME {FILENAME}", type_of_var=lchar_t) 252 CALL section_add_keyword(section, keyword) 253 CALL keyword_release(keyword) 254 255 CALL keyword_create(keyword, __LOCATION__, name="VDW_SCALE14", & 256 description="Scaling factor for the VDW 1-4 ", & 257 usage="VDW_SCALE14 1.0", default_r_val=1.0_dp) 258 CALL section_add_keyword(section, keyword) 259 CALL keyword_release(keyword) 260 261 CALL keyword_create(keyword, __LOCATION__, name="EI_SCALE14", & 262 description="Scaling factor for the electrostatics 1-4 ", & 263 usage="EI_SCALE14 1.0", default_r_val=0.0_dp) 264 CALL section_add_keyword(section, keyword) 265 CALL keyword_release(keyword) 266 267 CALL keyword_create(keyword, __LOCATION__, name="SHIFT_CUTOFF", & 268 description="Add a constant energy shift to the real-space "// & 269 "non-bonding interactions (both Van der Waals and "// & 270 "electrostatic) such that the energy at the cutoff radius is "// & 271 "zero. This makes the non-bonding interactions continuous at "// & 272 "the cutoff.", & 273 usage="SHIFT_CUTOFF <LOGICAL>", default_l_val=.TRUE.) 274 CALL section_add_keyword(section, keyword) 275 CALL keyword_release(keyword) 276 277 CALL keyword_create(keyword, __LOCATION__, name="DO_NONBONDED", & 278 description="Controls the computation of all the real-space "// & 279 "(short-range) nonbonded interactions. This also "// & 280 "includes the real-space corrections for excluded "// & 281 "or scaled 1-2, 1-3 and 1-4 interactions. When set "// & 282 "to F, the neighborlists are not created and all "// & 283 "interactions that depend on them are not computed.", & 284 usage="DO_NONBONDED T", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.) 285 CALL section_add_keyword(section, keyword) 286 CALL keyword_release(keyword) 287 288 CALL keyword_create(keyword, __LOCATION__, name="IGNORE_MISSING_CRITICAL_PARAMS", & 289 description="Do not abort when critical force-field parameters "// & 290 "are missing. CP2K will run as if the terms containing the "// & 291 "missing parameters are zero.", & 292 usage="IGNORE_MISSING_BOND_PARAMS T", default_l_val=.FALSE., & 293 lone_keyword_l_val=.TRUE.) 294 CALL section_add_keyword(section, keyword) 295 CALL keyword_release(keyword) 296 297 CALL keyword_create(keyword, __LOCATION__, name="MULTIPLE_POTENTIAL", & 298 description="Enables the possibility to define NONBONDED and NONBONDED14 as a"// & 299 " sum of different kinds of potential. Useful for piecewise defined potentials.", & 300 usage="MULTIPLE_POTENTIAL T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 301 CALL section_add_keyword(section, keyword) 302 CALL keyword_release(keyword) 303 !Universal scattering potential at very short distances 304 CALL keyword_create(keyword, __LOCATION__, name="ZBL_SCATTERING", & 305 description="A short range repulsive potential is added, to simulate "// & 306 "collisions and scattering.", & 307 usage="ZBL_SCATTERING T", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 308 CALL section_add_keyword(section, keyword) 309 CALL keyword_release(keyword) 310 311 ! 312 ! subsections 313 ! 314 CALL create_SPLINE_section(subsection) 315 CALL section_add_subsection(section, subsection) 316 CALL section_release(subsection) 317 318 CALL create_NONBONDED_section(subsection) 319 CALL section_add_subsection(section, subsection) 320 CALL section_release(subsection) 321 322 CALL create_NONBONDED14_section(subsection) 323 CALL section_add_subsection(section, subsection) 324 CALL section_release(subsection) 325 326 CALL create_CHARGE_section(subsection) 327 CALL section_add_subsection(section, subsection) 328 CALL section_release(subsection) 329 330 CALL create_CHARGES_section(subsection) 331 CALL section_add_subsection(section, subsection) 332 CALL section_release(subsection) 333 334 CALL create_SHELL_section(subsection) 335 CALL section_add_subsection(section, subsection) 336 CALL section_release(subsection) 337 338 CALL create_BOND_section(subsection, "BOND") 339 CALL section_add_subsection(section, subsection) 340 CALL section_release(subsection) 341 342 CALL create_BEND_section(subsection) 343 CALL section_add_subsection(section, subsection) 344 CALL section_release(subsection) 345 346 CALL create_TORSION_section(subsection) 347 CALL section_add_subsection(section, subsection) 348 CALL section_release(subsection) 349 350 CALL create_IMPROPER_section(subsection) 351 CALL section_add_subsection(section, subsection) 352 CALL section_release(subsection) 353 354 CALL create_OPBEND_section(subsection) 355 CALL section_add_subsection(section, subsection) 356 CALL section_release(subsection) 357 358 CALL create_DIPOLE_section(subsection) 359 CALL section_add_subsection(section, subsection) 360 CALL section_release(subsection) 361 362 CALL create_QUADRUPOLE_section(subsection) 363 CALL section_add_subsection(section, subsection) 364 CALL section_release(subsection) 365 366 END SUBROUTINE create_forcefield_section 367 368! ************************************************************************************************** 369!> \brief This section specifies the parameters for the splines 370!> \param section the section to create 371!> \author teo 372! ************************************************************************************************** 373 SUBROUTINE create_SPLINE_section(section) 374 TYPE(section_type), POINTER :: section 375 376 CHARACTER(len=*), PARAMETER :: routineN = 'create_SPLINE_section', & 377 routineP = moduleN//':'//routineN 378 379 TYPE(keyword_type), POINTER :: keyword 380 381 CPASSERT(.NOT. ASSOCIATED(section)) 382 CALL section_create(section, __LOCATION__, name="SPLINE", & 383 description="specifies parameters to set up the splines used in the"// & 384 " nonboned interactions (both pair body potential and many body potential)", & 385 n_keywords=1, n_subsections=0, repeats=.TRUE.) 386 387 NULLIFY (keyword) 388 389 CALL keyword_create(keyword, __LOCATION__, name="R0_NB", & 390 description="Specify the minimum value of the distance interval "// & 391 " that brackets the value of emax_spline.", & 392 usage="R0_NB <REAL>", default_r_val=cp_unit_to_cp2k(value=0.9_dp, & 393 unit_str="bohr"), & 394 unit_str="angstrom") 395 CALL section_add_keyword(section, keyword) 396 CALL keyword_release(keyword) 397 398 CALL keyword_create(keyword, __LOCATION__, name="RCUT_NB", & 399 description="Cutoff radius for nonbonded interactions. This value overrides "// & 400 " the value specified in the potential definition and is global for all potentials.", & 401 usage="RCUT_NB {real}", default_r_val=cp_unit_to_cp2k(value=-1.0_dp, & 402 unit_str="angstrom"), & 403 unit_str="angstrom") 404 CALL section_add_keyword(section, keyword) 405 CALL keyword_release(keyword) 406 407 CALL keyword_create(keyword, __LOCATION__, name="EMAX_SPLINE", & 408 description="Specify the maximum value of the potential up to which"// & 409 " splines will be constructed", & 410 usage="EMAX_SPLINE <REAL>", & 411 default_r_val=0.5_dp, unit_str="hartree") 412 CALL section_add_keyword(section, keyword) 413 CALL keyword_release(keyword) 414 415 CALL keyword_create(keyword, __LOCATION__, name="EMAX_ACCURACY", & 416 description="Specify the maximum value of energy used to check the accuracy"// & 417 " requested through EPS_SPLINE. Energy values larger than EMAX_ACCURACY"// & 418 " generally do not satisfy the requested accuracy", & 419 usage="EMAX_ACCURACY <REAL>", default_r_val=0.02_dp, unit_str="hartree") 420 CALL section_add_keyword(section, keyword) 421 CALL keyword_release(keyword) 422 423 CALL keyword_create(keyword, __LOCATION__, name="EPS_SPLINE", & 424 description="Specify the threshold for the choice of the number of"// & 425 " points used in the splines (comparing the splined value with the "// & 426 " analytically evaluated one)", & 427 usage="EPS_SPLINE <REAL>", default_r_val=1.0E-7_dp, unit_str="hartree") 428 CALL section_add_keyword(section, keyword) 429 CALL keyword_release(keyword) 430 431 CALL keyword_create( & 432 keyword, __LOCATION__, name="NPOINTS", & 433 description="Override the default search for an accurate spline by specifying a fixed number of spline points.", & 434 usage="NPOINTS 1024", default_i_val=-1) 435 CALL section_add_keyword(section, keyword) 436 CALL keyword_release(keyword) 437 438 CALL keyword_create(keyword, __LOCATION__, name="UNIQUE_SPLINE", & 439 description="For few potentials (Lennard-Jones) one global optimal spline is generated instead"// & 440 " of different optimal splines for each kind of potential", & 441 usage="UNIQUE_SPLINE <LOGICAL>", lone_keyword_l_val=.TRUE., default_l_val=.FALSE.) 442 CALL section_add_keyword(section, keyword) 443 CALL keyword_release(keyword) 444 445 END SUBROUTINE create_SPLINE_section 446 447! ************************************************************************************************** 448!> \brief This section specifies the torsion of the MM atoms 449!> \param section the section to create 450!> \author teo 451! ************************************************************************************************** 452 SUBROUTINE create_TORSION_section(section) 453 TYPE(section_type), POINTER :: section 454 455 CHARACTER(len=*), PARAMETER :: routineN = 'create_TORSION_section', & 456 routineP = moduleN//':'//routineN 457 458 TYPE(keyword_type), POINTER :: keyword 459 460 CPASSERT(.NOT. ASSOCIATED(section)) 461 CALL section_create(section, __LOCATION__, name="TORSION", & 462 description="Specifies the torsion potential of the MM system.", & 463 n_keywords=1, n_subsections=0, repeats=.TRUE.) 464 465 NULLIFY (keyword) 466 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 467 description="Defines the atomic kinds involved in the tors.", & 468 usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, & 469 n_var=4) 470 CALL section_add_keyword(section, keyword) 471 CALL keyword_release(keyword) 472 473 CALL keyword_create(keyword, __LOCATION__, name="KIND", & 474 description="Define the kind of torsion potential", & 475 usage="KIND CHARMM", & 476 enum_c_vals=s2a("CHARMM", "G87", "G96", "AMBER", "OPLS"), & 477 enum_desc=s2a("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 (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", & 480 "Functional Form (CHARMM|G87|G96|AMBER): K * [ 1 + cos[M*PHI - PHI0]]", & 481 "Functional Form: K / 2 * [ 1 + (-1)^(M-1) * cos[M*PHI]]"), & 482 enum_i_vals=(/do_ff_charmm, & 483 do_ff_g87, & 484 do_ff_g96, & 485 do_ff_amber, & 486 do_ff_opls/), & 487 default_i_val=do_ff_charmm) 488 CALL section_add_keyword(section, keyword) 489 CALL keyword_release(keyword) 490 491 CALL keyword_create(keyword, __LOCATION__, name="K", & 492 description="Defines the force constant of the potential", & 493 usage="K {real}", type_of_var=real_t, & 494 n_var=1, unit_str="hartree") 495 CALL section_add_keyword(section, keyword) 496 CALL keyword_release(keyword) 497 498 CALL keyword_create(keyword, __LOCATION__, name="PHI0", & 499 description="Defines the phase of the potential.", & 500 usage="PHI0 {real}", type_of_var=real_t, & 501 n_var=1, unit_str="rad", default_r_val=0.0_dp) 502 CALL section_add_keyword(section, keyword) 503 CALL keyword_release(keyword) 504 505 CALL keyword_create(keyword, __LOCATION__, name="M", & 506 description="Defines the multiplicity of the potential.", & 507 usage="M {integer}", type_of_var=integer_t, & 508 n_var=1) 509 CALL section_add_keyword(section, keyword) 510 CALL keyword_release(keyword) 511 512 END SUBROUTINE create_TORSION_section 513 514! ************************************************************************************************** 515!> \brief This section specifies the improper torsion of the MM atoms 516!> \param section the section to create 517!> \author louis vanduyfhuys 518! ************************************************************************************************** 519 SUBROUTINE create_IMPROPER_section(section) 520 TYPE(section_type), POINTER :: section 521 522 CHARACTER(len=*), PARAMETER :: routineN = 'create_IMPROPER_section', & 523 routineP = moduleN//':'//routineN 524 525 TYPE(keyword_type), POINTER :: keyword 526 527 CPASSERT(.NOT. ASSOCIATED(section)) 528 CALL section_create(section, __LOCATION__, name="IMPROPER", & 529 description="Specifies the improper torsion potential of the MM system.", & 530 n_keywords=1, n_subsections=0, repeats=.TRUE.) 531 532 NULLIFY (keyword) 533 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 534 description="Defines the atomic kinds involved in the improper tors.", & 535 usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, & 536 n_var=4) 537 CALL section_add_keyword(section, keyword) 538 CALL keyword_release(keyword) 539 540 CALL keyword_create(keyword, __LOCATION__, name="KIND", & 541 description="Define the kind of improper torsion potential", & 542 usage="KIND CHARMM", & 543 enum_c_vals=s2a("CHARMM", "G87", "G96", "HARMONIC"), & 544 enum_desc=s2a("Functional Form (CHARMM): K * [ PHI - PHI0 ]**2", & 545 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", & 546 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", & 547 "Functional Form (G87|G96|HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2"), & 548 enum_i_vals=(/do_ff_charmm, & 549 do_ff_g87, & 550 do_ff_g96, & 551 do_ff_harmonic/), & 552 default_i_val=do_ff_charmm) 553 CALL section_add_keyword(section, keyword) 554 CALL keyword_release(keyword) 555 556 CALL keyword_create(keyword, __LOCATION__, name="K", & 557 description="Defines the force constant of the potential", & 558 usage="K {real}", type_of_var=real_t, & 559 n_var=1, unit_str="hartree*rad^-2") 560 CALL section_add_keyword(section, keyword) 561 CALL keyword_release(keyword) 562 563 CALL keyword_create(keyword, __LOCATION__, name="PHI0", & 564 description="Defines the phase of the potential.", & 565 usage="PHI0 {real}", type_of_var=real_t, & 566 n_var=1, unit_str="rad") 567 CALL section_add_keyword(section, keyword) 568 CALL keyword_release(keyword) 569 570 END SUBROUTINE create_IMPROPER_section 571 572! ************************************************************************************************** 573!> \brief This section specifies the out of plane bend of the MM atoms 574!> \param section the section to create 575!> \author louis vanduyfhuys 576! ************************************************************************************************** 577 SUBROUTINE create_OPBEND_section(section) 578 TYPE(section_type), POINTER :: section 579 580 CHARACTER(len=*), PARAMETER :: routineN = 'create_OPBEND_section', & 581 routineP = moduleN//':'//routineN 582 583 TYPE(keyword_type), POINTER :: keyword 584 585 CPASSERT(.NOT. ASSOCIATED(section)) 586 CALL section_create(section, __LOCATION__, name="OPBEND", & 587 description="Specifies the out of plane bend potential of the MM system."// & 588 "(Only defined for atom quadruples which are also defined as an improper"// & 589 " pattern in the topology.)", & 590 n_keywords=1, n_subsections=0, repeats=.TRUE.) 591 592 NULLIFY (keyword) 593 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 594 description="Defines the atomic kinds involved in the opbend.", & 595 usage="ATOMS {KIND1} {KIND2} {KIND3} {KIND4}", type_of_var=char_t, & 596 n_var=4) 597 CALL section_add_keyword(section, keyword) 598 CALL keyword_release(keyword) 599 600 CALL keyword_create(keyword, __LOCATION__, name="KIND", & 601 description="Define the kind of out of plane bend potential", & 602 usage="KIND HARMONIC", & 603 enum_c_vals=s2a("HARMONIC", "MM2", "MM3", "MM4"), & 604 enum_desc=s2a("Functional Form (HARMONIC): 0.5 * K * [ PHI - PHI0 ]**2", & 605 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", & 606 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2", & 607 "Functional Form (MM2|MM3|MM4): K * [ PHI - PHI0 ]**2"), & 608 enum_i_vals=(/do_ff_harmonic, & 609 do_ff_mm2, & 610 do_ff_mm3, & 611 do_ff_mm4/), & 612 default_i_val=do_ff_harmonic) 613 CALL section_add_keyword(section, keyword) 614 CALL keyword_release(keyword) 615 616 CALL keyword_create(keyword, __LOCATION__, name="K", & 617 description="Defines the force constant of the potential", & 618 usage="K {real}", type_of_var=real_t, & 619 n_var=1, unit_str="hartree*rad^-2") 620 CALL section_add_keyword(section, keyword) 621 CALL keyword_release(keyword) 622 623 CALL keyword_create(keyword, __LOCATION__, name="PHI0", & 624 description="Defines the phase of the potential.", & 625 usage="PHI0 {real}", type_of_var=real_t, & 626 n_var=1, unit_str="rad") 627 CALL section_add_keyword(section, keyword) 628 CALL keyword_release(keyword) 629 630 END SUBROUTINE create_OPBEND_section 631 632! ************************************************************************************************** 633!> \brief This section specifies the bend of the MM atoms 634!> \param section the section to create 635!> \author teo 636! ************************************************************************************************** 637 SUBROUTINE create_BEND_section(section) 638 TYPE(section_type), POINTER :: section 639 640 CHARACTER(len=*), PARAMETER :: routineN = 'create_BEND_section', & 641 routineP = moduleN//':'//routineN 642 643 TYPE(keyword_type), POINTER :: keyword 644 TYPE(section_type), POINTER :: subsection 645 646 CPASSERT(.NOT. ASSOCIATED(section)) 647 CALL section_create(section, __LOCATION__, name="BEND", & 648 description="Specifies the bend potential of the MM system.", & 649 n_keywords=11, n_subsections=1, repeats=.TRUE.) 650 651 NULLIFY (keyword, subsection) 652 653 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 654 description="Defines the atomic kinds involved in the bend.", & 655 usage="ATOMS {KIND1} {KIND2} {KIND3}", type_of_var=char_t, & 656 n_var=3) 657 CALL section_add_keyword(section, keyword) 658 CALL keyword_release(keyword) 659 660 CALL keyword_create( & 661 keyword, __LOCATION__, name="KIND", & 662 description="Define the kind of bend potential", & 663 usage="KIND HARMONIC", & 664 enum_c_vals=s2a("HARMONIC", "CHARMM", "AMBER", "G87", "G96", "CUBIC", "MIXED_BEND_STRETCH", "MM3", & 665 "LEGENDRE"), & 666 enum_desc=s2a("Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", & 667 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", & 668 "Functional Form (CHARMM|AMBER): K*(THETA-THETA0)^2", & 669 "Functional Form (HARMONIC|G87): 1/2*K*(THETA-THETA0)^2", & 670 "Functional Form (G96): 1/2*K*(COS(THETA)-THETA0)^2", & 671 "Functional Form (CUBIC): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))", & 672 "Functional Form (MIXED_BEND_STRETCH): K*(THETA-THETA0)**2*(1+CB*(THETA-THETA0))+"// & 673 " KSS*(R12-R012)*(R32-R032)+KBS12*(R12-R012)*(THETA-THETA0)+KBS32*(R32-R032)*(THETA-THETA0)", & 674 "Functional Form (MM3): 1/2*K*(THETA-THETA0)**2*(1-0.014*(THETA-THETA0)+5.6E-5*(THETA-THETA0)**2"// & 675 " -7.0E-7*(THETA-THETA0)**3+9.0E-10*(THETA-THETA0)**4)+KBS12*(R12-R012)*(THETA-THETA0)+"// & 676 " KBS32*(R32-R032)*(THETA-THETA0)", & 677 "Functional Form (LEGENDRE): sum_{i=0}^N c_i*P_i(COS(THETA)) "), & 678 enum_i_vals=(/do_ff_harmonic, & 679 do_ff_charmm, & 680 do_ff_amber, & 681 do_ff_g87, & 682 do_ff_g96, & 683 do_ff_cubic, & 684 do_ff_mixed_bend_stretch, & 685 do_ff_mm3, & 686 do_ff_legendre/), & 687 default_i_val=do_ff_charmm) 688 CALL section_add_keyword(section, keyword) 689 CALL keyword_release(keyword) 690 691 CALL keyword_create(keyword, __LOCATION__, name="K", & 692 description="Defines the force constant of the potential", & 693 usage="K {real}", type_of_var=real_t, & 694 n_var=1, unit_str="hartree*rad^-2") 695 CALL section_add_keyword(section, keyword) 696 CALL keyword_release(keyword) 697 698 CALL keyword_create(keyword, __LOCATION__, name="CB", & 699 description="Defines the the cubic force constant of the bend", & 700 usage="CB {real}", default_r_val=0.0_dp, type_of_var=real_t, & 701 n_var=1, unit_str="rad^-1") 702 CALL section_add_keyword(section, keyword) 703 CALL keyword_release(keyword) 704 705 CALL keyword_create(keyword, __LOCATION__, name="R012", & 706 description="Mixed bend stretch parameter", & 707 usage="R012 {real}", default_r_val=0.0_dp, type_of_var=real_t, & 708 n_var=1, unit_str="bohr") 709 CALL section_add_keyword(section, keyword) 710 CALL keyword_release(keyword) 711 CALL keyword_create(keyword, __LOCATION__, name="R032", & 712 description="Mixed bend stretch parameter", & 713 usage="R032 {real}", default_r_val=0.0_dp, type_of_var=real_t, & 714 n_var=1, unit_str="bohr") 715 CALL section_add_keyword(section, keyword) 716 CALL keyword_release(keyword) 717 CALL keyword_create(keyword, __LOCATION__, name="KBS12", & 718 description="Mixed bend stretch parameter", & 719 usage="KBS12 {real}", default_r_val=0.0_dp, type_of_var=real_t, & 720 n_var=1, unit_str="hartree*bohr^-1*rad^-1") 721 CALL section_add_keyword(section, keyword) 722 CALL keyword_release(keyword) 723 CALL keyword_create(keyword, __LOCATION__, name="KBS32", & 724 description="Mixed bend stretch parameter", & 725 usage="KBS32 {real}", default_r_val=0.0_dp, type_of_var=real_t, & 726 n_var=1, unit_str="hartree*bohr^-1*rad^-1") 727 CALL section_add_keyword(section, keyword) 728 CALL keyword_release(keyword) 729 CALL keyword_create(keyword, __LOCATION__, name="KSS", & 730 description="Mixed bend stretch parameter", & 731 usage="KSS {real}", default_r_val=0.0_dp, type_of_var=real_t, & 732 n_var=1, unit_str="hartree*bohr^-2") 733 CALL section_add_keyword(section, keyword) 734 CALL keyword_release(keyword) 735 736 CALL keyword_create(keyword, __LOCATION__, name="THETA0", & 737 description="Defines the equilibrium angle.", & 738 usage="THETA0 {real}", type_of_var=real_t, & 739 n_var=1, unit_str='rad') 740 CALL section_add_keyword(section, keyword) 741 CALL keyword_release(keyword) 742 743 CALL keyword_create(keyword, __LOCATION__, name="LEGENDRE", & 744 description="Specifies the coefficients for the legendre"// & 745 " expansion of the bending potential."// & 746 "'THETA0' and 'K' are not used, but need to be specified."// & 747 "Use an arbitrary value.", usage="LEGENDRE {REAL} {REAL} ...", & 748 default_r_val=0.0d0, type_of_var=real_t, & 749 n_var=-1, unit_str="hartree") 750 CALL section_add_keyword(section, keyword) 751 CALL keyword_release(keyword) 752 753 ! Create the Urey-Bradley section 754 CALL create_BOND_section(subsection, "UB") 755 CALL section_add_subsection(section, subsection) 756 CALL section_release(subsection) 757 758 END SUBROUTINE create_BEND_section 759 760! ************************************************************************************************** 761!> \brief This section specifies the bond of the MM atoms 762!> \param section the section to create 763!> \param label ... 764!> \author teo 765! ************************************************************************************************** 766 SUBROUTINE create_BOND_section(section, label) 767 TYPE(section_type), POINTER :: section 768 CHARACTER(LEN=*), INTENT(IN) :: label 769 770 CHARACTER(len=*), PARAMETER :: routineN = 'create_BOND_section', & 771 routineP = moduleN//':'//routineN 772 773 CHARACTER(LEN=default_string_length) :: tag 774 TYPE(keyword_type), POINTER :: keyword 775 776 CPASSERT(.NOT. ASSOCIATED(section)) 777 NULLIFY (keyword) 778 779 IF (TRIM(label) == "UB") THEN 780 tag = " Urey-Bradley " 781 CALL section_create(section, __LOCATION__, name=TRIM(label), & 782 description="Specifies the Urey-Bradley potential between the external atoms"// & 783 " defining the angle", & 784 n_keywords=1, n_subsections=0, repeats=.FALSE.) 785 786 ELSE 787 tag = " Bond " 788 CALL section_create(section, __LOCATION__, name=TRIM(label), & 789 description="Specifies the bond potential", & 790 n_keywords=1, n_subsections=0, repeats=.TRUE.) 791 792 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 793 description="Defines the atomic kinds involved in the bond.", & 794 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 795 n_var=2) 796 CALL section_add_keyword(section, keyword) 797 CALL keyword_release(keyword) 798 END IF 799 800 CALL keyword_create(keyword, __LOCATION__, name="KIND", & 801 description="Define the kind of"//TRIM(tag)//"potential.", & 802 usage="KIND HARMONIC", & 803 enum_c_vals=s2a("HARMONIC", "CHARMM", "AMBER", "G87", "G96", "QUARTIC", & 804 "MORSE", "CUBIC", "FUES"), & 805 enum_desc=s2a("Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", & 806 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", & 807 "Functional Form (CHARMM|AMBER): K*(R-R0)^2", & 808 "Functional Form (HARMONIC|G87): 1/2*K*(R-R0)^2", & 809 "Functional Form (G96): 1/4*K*(R^2-R0^2)^2", & 810 "Functional Form (QUARTIC): (1/2*K1+[1/3*K2+1/4*K3*|R-R0|]*|R-R0|)(R-R0)^2", & 811 "Functional Form (MORSE): K1*[(1-exp(-K2*(R-R0)))^2-1])", & 812 "Functional Form (CUBIC): K*(R-R0)^2*(1+cs*(R-R0)+7/12*(cs^2*(R-R0)^2))", & 813 "Functional Form (FUES): 1/2*K*R0^2*(1+R0/R*(R0/R-2))"), & 814 enum_i_vals=(/do_ff_harmonic, & 815 do_ff_charmm, & 816 do_ff_amber, & 817 do_ff_g87, & 818 do_ff_g96, & 819 do_ff_quartic, & 820 do_ff_morse, & 821 do_ff_cubic, & 822 do_ff_fues/), & 823 default_i_val=do_ff_charmm) 824 CALL section_add_keyword(section, keyword) 825 CALL keyword_release(keyword) 826 827 CALL keyword_create(keyword, __LOCATION__, name="K", & 828 description="Defines the force constant of the potential. "// & 829 "For MORSE potentials 2 numbers are expected. "// & 830 "For QUARTIC potentials 3 numbers are expected.", & 831 usage="K {real}", type_of_var=real_t, & 832 n_var=-1, unit_str="internal_cp2k") 833 CALL section_add_keyword(section, keyword) 834 CALL keyword_release(keyword) 835 836 CALL keyword_create(keyword, __LOCATION__, name="CS", & 837 description="Defines the cubic stretch term.", & 838 usage="CS {real}", default_r_val=0.0_dp, type_of_var=real_t, & 839 n_var=1, unit_str="bohr^-1") 840 CALL section_add_keyword(section, keyword) 841 CALL keyword_release(keyword) 842 843 CALL keyword_create(keyword, __LOCATION__, name="R0", & 844 description="Defines the equilibrium distance.", & 845 usage="R0 {real}", type_of_var=real_t, & 846 n_var=1, unit_str="bohr") 847 CALL section_add_keyword(section, keyword) 848 CALL keyword_release(keyword) 849 850 END SUBROUTINE create_BOND_section 851 852! ************************************************************************************************** 853!> \brief This section specifies the charge of the MM atoms 854!> \param section the section to create 855!> \author teo 856! ************************************************************************************************** 857 SUBROUTINE create_charges_section(section) 858 TYPE(section_type), POINTER :: section 859 860 CHARACTER(len=*), PARAMETER :: routineN = 'create_charges_section', & 861 routineP = moduleN//':'//routineN 862 863 TYPE(keyword_type), POINTER :: keyword 864 865 CPASSERT(.NOT. ASSOCIATED(section)) 866 CALL section_create(section, __LOCATION__, name="charges", & 867 description="Allow to specify an array of classical charges, thus avoiding the"// & 868 " packing and permitting the usage of different charges for same atomic types.", & 869 n_keywords=1, n_subsections=0, repeats=.FALSE.) 870 871 NULLIFY (keyword) 872 CALL keyword_create(keyword, __LOCATION__, name="_DEFAULT_KEYWORD_", & 873 description="Value of the charge for the individual atom. Order MUST reflect"// & 874 " the one specified for the geometry.", repeats=.TRUE., usage="{Real}", & 875 type_of_var=real_t) 876 CALL section_add_keyword(section, keyword) 877 CALL keyword_release(keyword) 878 879 END SUBROUTINE create_charges_section 880 881! ************************************************************************************************** 882!> \brief This section specifies the charge of the MM atoms 883!> \param section the section to create 884!> \author teo 885! ************************************************************************************************** 886 SUBROUTINE create_charge_section(section) 887 TYPE(section_type), POINTER :: section 888 889 CHARACTER(len=*), PARAMETER :: routineN = 'create_charge_section', & 890 routineP = moduleN//':'//routineN 891 892 TYPE(keyword_type), POINTER :: keyword 893 894 CPASSERT(.NOT. ASSOCIATED(section)) 895 CALL section_create(section, __LOCATION__, name="charge", & 896 description="This section specifies the charge of the MM atoms", & 897 n_keywords=1, n_subsections=0, repeats=.TRUE.) 898 899 NULLIFY (keyword) 900 901 CALL keyword_create(keyword, __LOCATION__, name="ATOM", & 902 description="Defines the atomic kind of the charge.", & 903 usage="ATOM {KIND1}", type_of_var=char_t, & 904 n_var=1) 905 CALL section_add_keyword(section, keyword) 906 CALL keyword_release(keyword) 907 908 CALL keyword_create(keyword, __LOCATION__, name="CHARGE", & 909 description="Defines the charge of the MM atom in electron charge unit.", & 910 usage="CHARGE {real}", type_of_var=real_t, & 911 n_var=1) 912 CALL section_add_keyword(section, keyword) 913 CALL keyword_release(keyword) 914 915 END SUBROUTINE create_charge_section 916 917! ************************************************************************************************** 918!> \brief This section specifies the isotropic polarizability of the MM atoms 919!> \param section the section to create 920!> \author Marcel Baer 921! ************************************************************************************************** 922 SUBROUTINE create_quadrupole_section(section) 923 TYPE(section_type), POINTER :: section 924 925 CHARACTER(len=*), PARAMETER :: routineN = 'create_quadrupole_section', & 926 routineP = moduleN//':'//routineN 927 928 TYPE(keyword_type), POINTER :: keyword 929 930 CPASSERT(.NOT. ASSOCIATED(section)) 931 CALL section_create( & 932 section, __LOCATION__, name="QUADRUPOLE", & 933 description="This section specifies that we will perform an SCF quadrupole calculation of the MM atoms. "// & 934 "Needs KEYWORD POL_SCF in POISSON secton", & 935 n_keywords=1, n_subsections=0, repeats=.TRUE.) 936 937 NULLIFY (keyword) 938 939 CALL keyword_create(keyword, __LOCATION__, name="ATOM", & 940 description="Defines the atomic kind of the SCF quadrupole.", & 941 usage="ATOM {KIND1}", type_of_var=char_t, & 942 n_var=1) 943 CALL section_add_keyword(section, keyword) 944 CALL keyword_release(keyword) 945 946 CALL keyword_create(keyword, __LOCATION__, name="CPOL", & 947 description="Defines the isotropic polarizability of the MM atom.", & 948 usage="CPOL {real}", type_of_var=real_t, & 949 n_var=1, unit_str='internal_cp2k') 950 CALL section_add_keyword(section, keyword) 951 CALL keyword_release(keyword) 952 953 END SUBROUTINE create_quadrupole_section 954 955! ************************************************************************************************** 956!> \brief This section specifies the isotropic polarizability of the MM atoms 957!> \param section the section to create 958!> \author Marcel Baer 959! ************************************************************************************************** 960 SUBROUTINE create_dipole_section(section) 961 TYPE(section_type), POINTER :: section 962 963 CHARACTER(len=*), PARAMETER :: routineN = 'create_dipole_section', & 964 routineP = moduleN//':'//routineN 965 966 TYPE(keyword_type), POINTER :: keyword 967 TYPE(section_type), POINTER :: subsection 968 969 CPASSERT(.NOT. ASSOCIATED(section)) 970 CALL section_create(section, __LOCATION__, name="DIPOLE", & 971 description="This section specifies that we will perform an SCF dipole calculation of the MM atoms. "// & 972 "Needs KEYWORD POL_SCF in POISSON secton", & 973 n_keywords=1, n_subsections=1, repeats=.TRUE.) 974 975 NULLIFY (subsection, keyword) 976 977 CALL keyword_create(keyword, __LOCATION__, name="ATOM", & 978 description="Defines the atomic kind of the SCF dipole.", & 979 usage="ATOM {KIND1}", type_of_var=char_t, & 980 n_var=1) 981 CALL section_add_keyword(section, keyword) 982 CALL keyword_release(keyword) 983 984 CALL keyword_create(keyword, __LOCATION__, name="APOL", & 985 description="Defines the isotropic polarizability of the MM atom.", & 986 usage="APOL {real}", type_of_var=real_t, & 987 n_var=1, unit_str='angstrom^3') 988 CALL section_add_keyword(section, keyword) 989 CALL keyword_release(keyword) 990 991 CALL create_DAMPING_section(subsection) 992 CALL section_add_subsection(section, subsection) 993 CALL section_release(subsection) 994 END SUBROUTINE create_dipole_section 995 996! ************************************************************************************************** 997!> \brief This section specifies the idamping parameters for polarizable atoms 998!> \param section the section to create 999!> \author Rodolphe Vuilleumier 1000! ************************************************************************************************** 1001 SUBROUTINE create_damping_section(section) 1002 TYPE(section_type), POINTER :: section 1003 1004 CHARACTER(len=*), PARAMETER :: routineN = 'create_damping_section', & 1005 routineP = moduleN//':'//routineN 1006 1007 TYPE(keyword_type), POINTER :: keyword 1008 1009 CPASSERT(.NOT. ASSOCIATED(section)) 1010 CALL section_create(section, __LOCATION__, name="DAMPING", & 1011 description="This section specifies optional electric field damping for the polarizable atoms. ", & 1012 n_keywords=4, n_subsections=0, repeats=.TRUE.) 1013 1014 NULLIFY (keyword) 1015 1016 CALL keyword_create(keyword, __LOCATION__, name="ATOM", & 1017 description="Defines the atomic kind for this damping function.", & 1018 usage="ATOM {KIND1}", type_of_var=char_t, & 1019 n_var=1) 1020 CALL section_add_keyword(section, keyword) 1021 CALL keyword_release(keyword) 1022 1023 CALL keyword_create(keyword, __LOCATION__, name="TYPE", & 1024 description="Defines the damping type.", & 1025 usage="TYPE {string}", type_of_var=char_t, & 1026 n_var=1, default_c_val="TANG-TOENNIES") 1027 CALL section_add_keyword(section, keyword) 1028 CALL keyword_release(keyword) 1029 1030 CALL keyword_create(keyword, __LOCATION__, name="ORDER", & 1031 description="Defines the order for this damping.", & 1032 usage="ORDER {integer}", type_of_var=integer_t, & 1033 n_var=1, default_i_val=3) 1034 CALL section_add_keyword(section, keyword) 1035 CALL keyword_release(keyword) 1036 1037 CALL keyword_create(keyword, __LOCATION__, name="BIJ", & 1038 description="Defines the BIJ parameter for this damping.", & 1039 usage="BIJ {real}", type_of_var=real_t, & 1040 n_var=1, unit_str='angstrom^-1') 1041 CALL section_add_keyword(section, keyword) 1042 CALL keyword_release(keyword) 1043 1044 CALL keyword_create(keyword, __LOCATION__, name="CIJ", & 1045 description="Defines the CIJ parameter for this damping.", & 1046 usage="CIJ {real}", type_of_var=real_t, & 1047 n_var=1, unit_str='') 1048 CALL section_add_keyword(section, keyword) 1049 CALL keyword_release(keyword) 1050 1051 END SUBROUTINE create_damping_section 1052 1053! ************************************************************************************************** 1054!> \brief This section specifies the charge of the MM atoms 1055!> \param section the section to create 1056!> \author teo 1057! ************************************************************************************************** 1058 SUBROUTINE create_shell_section(section) 1059 TYPE(section_type), POINTER :: section 1060 1061 CHARACTER(len=*), PARAMETER :: routineN = 'create_shell_section', & 1062 routineP = moduleN//':'//routineN 1063 1064 TYPE(keyword_type), POINTER :: keyword 1065 1066 CPASSERT(.NOT. ASSOCIATED(section)) 1067 CALL section_create(section, __LOCATION__, name="SHELL", & 1068 description="This section specifies the parameters for shell-model potentials", & 1069 n_keywords=6, n_subsections=0, repeats=.TRUE., & 1070 citations=(/Dick1958, Mitchell1993, Devynck2012/)) 1071 1072 NULLIFY (keyword) 1073 1074 CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", & 1075 description="The kind for which the shell potential parameters are given ", & 1076 usage="H", default_c_val="DEFAULT") 1077 CALL section_add_keyword(section, keyword) 1078 CALL keyword_release(keyword) 1079 1080 CALL keyword_create(keyword, __LOCATION__, name="CORE_CHARGE", & 1081 variants=(/"CORE"/), & 1082 description="Partial charge assigned to the core (electron charge units)", & 1083 usage="CORE_CHARGE {real}", & 1084 default_r_val=0.0_dp) 1085 CALL section_add_keyword(section, keyword) 1086 CALL keyword_release(keyword) 1087 1088 CALL keyword_create(keyword, __LOCATION__, name="SHELL_CHARGE", & 1089 variants=(/"SHELL"/), & 1090 description="Partial charge assigned to the shell (electron charge units)", & 1091 usage="SHELL_CHARGE {real}", & 1092 default_r_val=0.0_dp) 1093 CALL section_add_keyword(section, keyword) 1094 CALL keyword_release(keyword) 1095 1096 CALL keyword_create(keyword, __LOCATION__, name="MASS_FRACTION", & 1097 variants=(/"MASS"/), & 1098 description="Fraction of the mass of the atom to be assigned to the shell", & 1099 usage="MASS_FRACTION {real}", & 1100 default_r_val=0.1_dp) 1101 CALL section_add_keyword(section, keyword) 1102 CALL keyword_release(keyword) 1103 1104 CALL keyword_create(keyword, __LOCATION__, name="K2_SPRING", & 1105 variants=s2a("K2", "SPRING"), & 1106 description="Force constant k2 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// & 1107 "binding a core-shell pair when a core-shell potential is employed.", & 1108 repeats=.FALSE., & 1109 usage="K2_SPRING {real}", & 1110 default_r_val=-1.0_dp, & 1111 unit_str="hartree*bohr^-2") 1112 CALL section_add_keyword(section, keyword) 1113 CALL keyword_release(keyword) 1114 1115 CALL keyword_create(keyword, __LOCATION__, name="K4_SPRING", & 1116 variants=s2a("K4"), & 1117 description="Force constant k4 of the spring potential 1/2*k2*r^2 + 1/24*k4*r^4 "// & 1118 "binding a core-shell pair when a core-shell potential is employed. "// & 1119 "By default a harmonic spring potential is used, i.e. k4 is zero.", & 1120 repeats=.FALSE., & 1121 usage="K4_SPRING {real}", & 1122 default_r_val=0.0_dp, & 1123 unit_str="hartree*bohr^-4") 1124 CALL section_add_keyword(section, keyword) 1125 CALL keyword_release(keyword) 1126 1127 CALL keyword_create(keyword, __LOCATION__, name="MAX_DISTANCE", & 1128 description="Assign a maximum elongation of the spring, "// & 1129 "if negative no limit is imposed", & 1130 usage="MAX_DISTANCE 0.0", & 1131 default_r_val=-1.0_dp, & 1132 unit_str="angstrom") 1133 CALL section_add_keyword(section, keyword) 1134 CALL keyword_release(keyword) 1135 1136 CALL keyword_create(keyword, __LOCATION__, name="SHELL_CUTOFF", & 1137 description="Define a screening function to exclude some neighbors "// & 1138 " of the shell when electrostatic interaction are considered, "// & 1139 "if negative no screening is operated", & 1140 usage="SHELL_CUTOFF -1.0", & 1141 default_r_val=-1.0_dp, & 1142 unit_str="angstrom") 1143 CALL section_add_keyword(section, keyword) 1144 CALL keyword_release(keyword) 1145 1146 END SUBROUTINE create_shell_section 1147 1148! ************************************************************************************************** 1149!> \brief This section specifies the input parameters for 1-4 NON-BONDED 1150!> Interactions 1151!> \param section the section to create 1152!> \author teo 1153! ************************************************************************************************** 1154 SUBROUTINE create_NONBONDED14_section(section) 1155 TYPE(section_type), POINTER :: section 1156 1157 CHARACTER(len=*), PARAMETER :: routineN = 'create_NONBONDED14_section', & 1158 routineP = moduleN//':'//routineN 1159 1160 TYPE(section_type), POINTER :: subsection 1161 1162 CPASSERT(.NOT. ASSOCIATED(section)) 1163 CALL section_create(section, __LOCATION__, name="nonbonded14", & 1164 description="This section specifies the input parameters for 1-4 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_Goodwin_section(subsection) 1177 CALL section_add_subsection(section, subsection) 1178 CALL section_release(subsection) 1179 1180 CALL create_GENPOT_section(subsection) 1181 CALL section_add_subsection(section, subsection) 1182 CALL section_release(subsection) 1183 1184 END SUBROUTINE create_NONBONDED14_section 1185 1186! ************************************************************************************************** 1187!> \brief This section specifies the input parameters for 1-4 NON-BONDED 1188!> Interactions 1189!> \param section the section to create 1190!> \author teo 1191! ************************************************************************************************** 1192 SUBROUTINE create_NONBONDED_section(section) 1193 TYPE(section_type), POINTER :: section 1194 1195 CHARACTER(len=*), PARAMETER :: routineN = 'create_NONBONDED_section', & 1196 routineP = moduleN//':'//routineN 1197 1198 TYPE(section_type), POINTER :: subsection 1199 1200 CPASSERT(.NOT. ASSOCIATED(section)) 1201 CALL section_create(section, __LOCATION__, name="nonbonded", & 1202 description="This section specifies the input parameters for NON-BONDED interactions.", & 1203 n_keywords=1, n_subsections=0, repeats=.FALSE.) 1204 1205 NULLIFY (subsection) 1206 CALL create_LJ_section(subsection) 1207 CALL section_add_subsection(section, subsection) 1208 CALL section_release(subsection) 1209 1210 CALL create_Williams_section(subsection) 1211 CALL section_add_subsection(section, subsection) 1212 CALL section_release(subsection) 1213 1214 CALL create_EAM_section(subsection) 1215 CALL section_add_subsection(section, subsection) 1216 CALL section_release(subsection) 1217 1218 CALL create_QUIP_section(subsection) 1219 CALL section_add_subsection(section, subsection) 1220 CALL section_release(subsection) 1221 1222 CALL create_Goodwin_section(subsection) 1223 CALL section_add_subsection(section, subsection) 1224 CALL section_release(subsection) 1225 1226 CALL create_IPBV_section(subsection) 1227 CALL section_add_subsection(section, subsection) 1228 CALL section_release(subsection) 1229 1230 CALL create_BMHFT_section(subsection) 1231 CALL section_add_subsection(section, subsection) 1232 CALL section_release(subsection) 1233 1234 CALL create_BMHFTD_section(subsection) 1235 CALL section_add_subsection(section, subsection) 1236 CALL section_release(subsection) 1237 1238 CALL create_Buck4r_section(subsection) 1239 CALL section_add_subsection(section, subsection) 1240 CALL section_release(subsection) 1241 1242 CALL create_Buckmorse_section(subsection) 1243 CALL section_add_subsection(section, subsection) 1244 CALL section_release(subsection) 1245 1246 CALL create_GENPOT_section(subsection) 1247 CALL section_add_subsection(section, subsection) 1248 CALL section_release(subsection) 1249 1250 CALL create_Tersoff_section(subsection) 1251 CALL section_add_subsection(section, subsection) 1252 CALL section_release(subsection) 1253 1254 CALL create_Siepmann_section(subsection) 1255 CALL section_add_subsection(section, subsection) 1256 CALL section_release(subsection) 1257 1258 END SUBROUTINE create_NONBONDED_section 1259 1260! ************************************************************************************************** 1261!> \brief This section specifies the input parameters for generation of 1262!> neighbor lists 1263!> \param section the section to create 1264!> \author teo [07.2007] - Zurich University 1265! ************************************************************************************************** 1266 SUBROUTINE create_neighbor_lists_section(section) 1267 TYPE(section_type), POINTER :: section 1268 1269 CHARACTER(len=*), PARAMETER :: routineN = 'create_neighbor_lists_section', & 1270 routineP = moduleN//':'//routineN 1271 1272 TYPE(keyword_type), POINTER :: keyword 1273 1274 NULLIFY (keyword) 1275 CPASSERT(.NOT. ASSOCIATED(section)) 1276 CALL section_create(section, __LOCATION__, name="neighbor_lists", & 1277 description="This section specifies the input parameters for the construction of"// & 1278 " neighbor lists.", & 1279 n_keywords=1, n_subsections=0, repeats=.FALSE.) 1280 1281 CALL keyword_create(keyword, __LOCATION__, name="VERLET_SKIN", & 1282 description="Defines the Verlet Skin for the generation of the neighbor lists", & 1283 usage="VERLET_SKIN {real}", default_r_val=cp_unit_to_cp2k(value=1.0_dp, & 1284 unit_str="angstrom"), & 1285 unit_str="angstrom") 1286 CALL section_add_keyword(section, keyword) 1287 CALL keyword_release(keyword) 1288 1289 CALL keyword_create(keyword, __LOCATION__, name="neighbor_lists_from_scratch", & 1290 description="This keyword enables the building of the neighbouring list from scratch.", & 1291 usage="neighbor_lists_from_scratch logical", & 1292 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 1293 CALL section_add_keyword(section, keyword) 1294 CALL keyword_release(keyword) 1295 1296 CALL keyword_create(keyword, __LOCATION__, name="GEO_CHECK", & 1297 description="This keyword enables the check that two atoms are never below the minimum"// & 1298 " value used to construct the splines during the construction of the neighbouring list."// & 1299 " Disabling this keyword avoids CP2K to abort in case two atoms are below the minimum "// & 1300 " value of the radius used to generate the splines.", & 1301 usage="GEO_CHECK", & 1302 default_l_val=.TRUE., lone_keyword_l_val=.TRUE.) 1303 CALL section_add_keyword(section, keyword) 1304 CALL keyword_release(keyword) 1305 1306 END SUBROUTINE create_neighbor_lists_section 1307 1308! ************************************************************************************************** 1309!> \brief This section specifies the input parameters for a generic potential form 1310!> \param section the section to create 1311!> \author teo 1312! ************************************************************************************************** 1313 SUBROUTINE create_GENPOT_section(section) 1314 TYPE(section_type), POINTER :: section 1315 1316 CHARACTER(len=*), PARAMETER :: routineN = 'create_GENPOT_section', & 1317 routineP = moduleN//':'//routineN 1318 1319 TYPE(keyword_type), POINTER :: keyword 1320 1321 CPASSERT(.NOT. ASSOCIATED(section)) 1322 CALL section_create(section, __LOCATION__, name="GENPOT", & 1323 description="This section specifies the input parameters for a generic potential type. "// & 1324 "A functional form is specified. Mathematical Operators recognized are +, -, *, /, ** "// & 1325 "or alternatively ^, whereas symbols for brackets must be (). "// & 1326 "The function parser recognizes the (single argument) Fortran 90 intrinsic functions "// & 1327 "abs, exp, log10, log, sqrt, sinh, cosh, tanh, sin, cos, tan, asin, acos, atan, erf, erfc. "// & 1328 "Parsing for intrinsic functions is not case sensitive.", & 1329 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1330 1331 NULLIFY (keyword) 1332 1333 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1334 description="Defines the atomic kind involved in the generic potential", & 1335 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1336 n_var=2) 1337 CALL section_add_keyword(section, keyword) 1338 CALL keyword_release(keyword) 1339 1340 CALL keyword_create(keyword, __LOCATION__, name="FUNCTION", & 1341 description="Specifies the functional form in mathematical notation.", & 1342 usage="FUNCTION a*EXP(-b*x^2)/x+D*log10(x)", type_of_var=lchar_t, & 1343 n_var=1) 1344 CALL section_add_keyword(section, keyword) 1345 CALL keyword_release(keyword) 1346 1347 CALL keyword_create(keyword, __LOCATION__, name="VARIABLES", & 1348 description="Defines the variable of the functional form.", & 1349 usage="VARIABLES x", type_of_var=char_t, & 1350 n_var=-1) 1351 CALL section_add_keyword(section, keyword) 1352 CALL keyword_release(keyword) 1353 1354 CALL keyword_create(keyword, __LOCATION__, name="PARAMETERS", & 1355 description="Defines the parameters of the functional form", & 1356 usage="PARAMETERS a b D", type_of_var=char_t, & 1357 n_var=-1, repeats=.TRUE.) 1358 CALL section_add_keyword(section, keyword) 1359 CALL keyword_release(keyword) 1360 1361 CALL keyword_create(keyword, __LOCATION__, name="VALUES", & 1362 description="Defines the values of parameter of the functional form", & 1363 usage="VALUES ", type_of_var=real_t, & 1364 n_var=-1, repeats=.TRUE., unit_str="internal_cp2k") 1365 CALL section_add_keyword(section, keyword) 1366 CALL keyword_release(keyword) 1367 1368 CALL keyword_create(keyword, __LOCATION__, name="UNITS", & 1369 description="Optionally, allows to define valid CP2K unit strings for each parameter value. "// & 1370 "It is assumed that the corresponding parameter value is specified in this unit.", & 1371 usage="UNITS angstrom eV*angstrom^-1 angstrom^1 K", type_of_var=char_t, & 1372 n_var=-1, repeats=.TRUE.) 1373 CALL section_add_keyword(section, keyword) 1374 CALL keyword_release(keyword) 1375 1376 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1377 description="Defines the cutoff parameter of the generic potential", & 1378 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 1379 unit_str="angstrom"), & 1380 unit_str="angstrom") 1381 CALL section_add_keyword(section, keyword) 1382 CALL keyword_release(keyword) 1383 1384 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1385 description="Defines the lower bound of the potential. If not set the range is the"// & 1386 " full range generate by the spline", usage="RMIN {real}", & 1387 type_of_var=real_t, unit_str="angstrom") 1388 CALL section_add_keyword(section, keyword) 1389 CALL keyword_release(keyword) 1390 1391 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1392 description="Defines the upper bound of the potential. If not set the range is the"// & 1393 " full range generate by the spline", usage="RMAX {real}", & 1394 type_of_var=real_t, unit_str="angstrom") 1395 CALL section_add_keyword(section, keyword) 1396 CALL keyword_release(keyword) 1397 1398 END SUBROUTINE create_GENPOT_section 1399 1400! ************************************************************************************************** 1401!> \brief This section specifies the input parameters for EAM potential type 1402!> \param section the section to create 1403!> \author teo 1404! ************************************************************************************************** 1405 SUBROUTINE create_EAM_section(section) 1406 TYPE(section_type), POINTER :: section 1407 1408 CHARACTER(len=*), PARAMETER :: routineN = 'create_EAM_section', & 1409 routineP = moduleN//':'//routineN 1410 1411 TYPE(keyword_type), POINTER :: keyword 1412 1413 CPASSERT(.NOT. ASSOCIATED(section)) 1414 CALL section_create(section, __LOCATION__, name="EAM", & 1415 description="This section specifies the input parameters for EAM potential type.", & 1416 citations=(/Foiles1986/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 1417 1418 NULLIFY (keyword) 1419 1420 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1421 description="Defines the atomic kind involved in the nonbond potential", & 1422 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1423 n_var=2) 1424 CALL section_add_keyword(section, keyword) 1425 CALL keyword_release(keyword) 1426 1427 CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", & 1428 variants=(/"PARMFILE"/), & 1429 description="Specifies the filename that contains the tabulated EAM potential. "// & 1430 "File structure: the first line of the potential file contains a title. "// & 1431 "The second line contains: atomic number, mass and lattice constant. "// & 1432 "These information are parsed but not used in CP2K. The third line contains: "// & 1433 "dr: increment of r for the tabulated values of density and phi (assuming r starts in 0) [angstrom]; "// & 1434 "drho: increment of density for the tabulated values of the embedding function (assuming rho starts "// & 1435 "in 0) [au_c]; cutoff: cutoff of the EAM potential; npoints: number of points in tabulated. Follow "// & 1436 "in order npoints lines for rho [au_c] and its derivative [au_c*angstrom^-1]; npoints lines for "// & 1437 "PHI [ev] and its derivative [ev*angstrom^-1] and npoint lines for the embedded function [ev] "// & 1438 "and its derivative [ev*au_c^-1].", & 1439 usage="PARM_FILE_NAME {FILENAME}", default_lc_val=" ") 1440 CALL section_add_keyword(section, keyword) 1441 CALL keyword_release(keyword) 1442 1443 END SUBROUTINE create_EAM_section 1444 1445! ************************************************************************************************** 1446!> \brief This section specifies the input parameters for QUIP potential type 1447!> \param section the section to create 1448!> \author teo 1449! ************************************************************************************************** 1450 SUBROUTINE create_QUIP_section(section) 1451 TYPE(section_type), POINTER :: section 1452 1453 CHARACTER(len=*), PARAMETER :: routineN = 'create_QUIP_section', & 1454 routineP = moduleN//':'//routineN 1455 1456 TYPE(keyword_type), POINTER :: keyword 1457 1458 CPASSERT(.NOT. ASSOCIATED(section)) 1459 CALL section_create(section, __LOCATION__, name="QUIP", & 1460 description="This section specifies the input parameters for QUIP potential type. "// & 1461 "Mainly intended for things like GAP corrections to DFT "// & 1462 "to achieve correlated-wavefunction-like accuracy. "// & 1463 "Requires linking with quip library from <a href=""http://www.libatoms.org"" "// & 1464 "target=""_blank"">http://www.libatoms.org</a> .", & 1465 citations=(/QUIP_ref/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 1466 1467 NULLIFY (keyword) 1468 1469 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1470 description="Defines the atomic kinds involved in the QUIP potential. "// & 1471 "For more than 2 elements, &QUIP section must be repeated until each element "// & 1472 "has been mentioned at least once. Set IGNORE_MISSING_CRITICAL_PARAMS to T "// & 1473 "in enclosing &FORCEFIELD section to avoid having to list every pair of elements separately.", & 1474 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1475 n_var=2) 1476 CALL section_add_keyword(section, keyword) 1477 CALL keyword_release(keyword) 1478 1479 CALL keyword_create(keyword, __LOCATION__, name="PARM_FILE_NAME", & 1480 variants=(/"PARMFILE"/), & 1481 description="Specifies the filename that contains the QUIP potential.", & 1482 usage="PARM_FILE_NAME {FILENAME}", default_lc_val="quip_params.xml") 1483 CALL section_add_keyword(section, keyword) 1484 CALL keyword_release(keyword) 1485 1486 CALL keyword_create(keyword, __LOCATION__, name="INIT_ARGS", & 1487 description="Specifies the potential initialization arguments for the QUIP potential. "// & 1488 "If blank (default) first potential defined in QUIP parameter file will be used.", & 1489 usage="INIT_ARGS", default_c_vals=(/""/), & 1490 n_var=-1, type_of_var=char_t) 1491 CALL section_add_keyword(section, keyword) 1492 CALL keyword_release(keyword) 1493 1494 CALL keyword_create(keyword, __LOCATION__, name="CALC_ARGS", & 1495 description="Specifies the potential calculation arguments for the QUIP potential.", & 1496 usage="CALC_ARGS", default_c_vals=(/""/), & 1497 n_var=-1, type_of_var=char_t) 1498 CALL section_add_keyword(section, keyword) 1499 CALL keyword_release(keyword) 1500 1501 END SUBROUTINE create_QUIP_section 1502 1503! ************************************************************************************************** 1504!> \brief This section specifies the input parameters for Lennard-Jones potential type 1505!> \param section the section to create 1506!> \author teo 1507! ************************************************************************************************** 1508 SUBROUTINE create_LJ_section(section) 1509 TYPE(section_type), POINTER :: section 1510 1511 CHARACTER(len=*), PARAMETER :: routineN = 'create_LJ_section', & 1512 routineP = moduleN//':'//routineN 1513 1514 TYPE(keyword_type), POINTER :: keyword 1515 1516 CPASSERT(.NOT. ASSOCIATED(section)) 1517 CALL section_create(section, __LOCATION__, name="lennard-jones", & 1518 description="This section specifies the input parameters for LENNARD-JONES potential type."// & 1519 "Functional form: V(r) = 4.0 * EPSILON * [(SIGMA/r)^12-(SIGMA/r)^6].", & 1520 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1521 1522 NULLIFY (keyword) 1523 1524 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1525 description="Defines the atomic kind involved in the nonbond potential", & 1526 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1527 n_var=2) 1528 CALL section_add_keyword(section, keyword) 1529 CALL keyword_release(keyword) 1530 1531 CALL keyword_create(keyword, __LOCATION__, name="EPSILON", & 1532 description="Defines the EPSILON parameter of the LJ potential", & 1533 usage="EPSILON {real}", type_of_var=real_t, & 1534 n_var=1, unit_str="K_e") 1535 CALL section_add_keyword(section, keyword) 1536 CALL keyword_release(keyword) 1537 1538 CALL keyword_create(keyword, __LOCATION__, name="SIGMA", & 1539 description="Defines the SIGMA parameter of the LJ potential", & 1540 usage="SIGMA {real}", type_of_var=real_t, & 1541 n_var=1, unit_str="angstrom") 1542 CALL section_add_keyword(section, keyword) 1543 CALL keyword_release(keyword) 1544 1545 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1546 description="Defines the cutoff parameter of the LJ potential", & 1547 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 1548 unit_str="angstrom"), & 1549 unit_str="angstrom") 1550 CALL section_add_keyword(section, keyword) 1551 CALL keyword_release(keyword) 1552 1553 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1554 description="Defines the lower bound of the potential. If not set the range is the"// & 1555 " full range generate by the spline", usage="RMIN {real}", & 1556 type_of_var=real_t, unit_str="angstrom") 1557 CALL section_add_keyword(section, keyword) 1558 CALL keyword_release(keyword) 1559 1560 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1561 description="Defines the upper bound of the potential. If not set the range is the"// & 1562 " full range generate by the spline", usage="RMAX {real}", & 1563 type_of_var=real_t, unit_str="angstrom") 1564 CALL section_add_keyword(section, keyword) 1565 CALL keyword_release(keyword) 1566 1567 END SUBROUTINE create_LJ_section 1568 1569! ************************************************************************************************** 1570!> \brief This section specifies the input parameters for Williams potential type 1571!> \param section the section to create 1572!> \author teo 1573! ************************************************************************************************** 1574 SUBROUTINE create_Williams_section(section) 1575 TYPE(section_type), POINTER :: section 1576 1577 CHARACTER(len=*), PARAMETER :: routineN = 'create_Williams_section', & 1578 routineP = moduleN//':'//routineN 1579 1580 TYPE(keyword_type), POINTER :: keyword 1581 1582 CPASSERT(.NOT. ASSOCIATED(section)) 1583 CALL section_create(section, __LOCATION__, name="williams", & 1584 description="This section specifies the input parameters for WILLIAMS potential type."// & 1585 "Functional form: V(r) = A*EXP(-B*r) - C / r^6 .", & 1586 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1587 1588 NULLIFY (keyword) 1589 1590 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1591 description="Defines the atomic kind involved in the nonbond potential", & 1592 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1593 n_var=2) 1594 CALL section_add_keyword(section, keyword) 1595 CALL keyword_release(keyword) 1596 1597 CALL keyword_create(keyword, __LOCATION__, name="A", & 1598 description="Defines the A parameter of the Williams potential", & 1599 usage="A {real}", type_of_var=real_t, & 1600 n_var=1, unit_str="K_e") 1601 CALL section_add_keyword(section, keyword) 1602 CALL keyword_release(keyword) 1603 1604 CALL keyword_create(keyword, __LOCATION__, name="B", & 1605 description="Defines the B parameter of the Williams potential", & 1606 usage="B {real}", type_of_var=real_t, & 1607 n_var=1, unit_str="angstrom^-1") 1608 CALL section_add_keyword(section, keyword) 1609 CALL keyword_release(keyword) 1610 1611 CALL keyword_create(keyword, __LOCATION__, name="C", & 1612 description="Defines the C parameter of the Williams potential", & 1613 usage="C {real}", type_of_var=real_t, & 1614 n_var=1, unit_str="K_e*angstrom^6") 1615 CALL section_add_keyword(section, keyword) 1616 CALL keyword_release(keyword) 1617 1618 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1619 description="Defines the cutoff parameter of the Williams potential", & 1620 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 1621 unit_str="angstrom"), & 1622 unit_str="angstrom") 1623 CALL section_add_keyword(section, keyword) 1624 CALL keyword_release(keyword) 1625 1626 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1627 description="Defines the lower bound of the potential. If not set the range is the"// & 1628 " full range generate by the spline", usage="RMIN {real}", & 1629 type_of_var=real_t, unit_str="angstrom") 1630 CALL section_add_keyword(section, keyword) 1631 CALL keyword_release(keyword) 1632 1633 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1634 description="Defines the upper bound of the potential. If not set the range is the"// & 1635 " full range generate by the spline", usage="RMAX {real}", & 1636 type_of_var=real_t, unit_str="angstrom") 1637 CALL section_add_keyword(section, keyword) 1638 CALL keyword_release(keyword) 1639 1640 END SUBROUTINE create_Williams_section 1641 1642! ************************************************************************************************** 1643!> \brief This section specifies the input parameters for Goodwin potential type 1644!> \param section the section to create 1645!> \author teo 1646! ************************************************************************************************** 1647 SUBROUTINE create_Goodwin_section(section) 1648 TYPE(section_type), POINTER :: section 1649 1650 CHARACTER(len=*), PARAMETER :: routineN = 'create_Goodwin_section', & 1651 routineP = moduleN//':'//routineN 1652 1653 TYPE(keyword_type), POINTER :: keyword 1654 1655 CPASSERT(.NOT. ASSOCIATED(section)) 1656 CALL section_create(section, __LOCATION__, name="goodwin", & 1657 description="This section specifies the input parameters for GOODWIN potential type."// & 1658 "Functional form: V(r) = EXP(M*(-(r/DC)**MC+(D/DC)**MC))*VR0*(D/r)**M.", & 1659 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1660 1661 NULLIFY (keyword) 1662 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1663 description="Defines the atomic kind involved in the nonbond potential", & 1664 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1665 n_var=2) 1666 CALL section_add_keyword(section, keyword) 1667 CALL keyword_release(keyword) 1668 1669 CALL keyword_create(keyword, __LOCATION__, name="VR0", & 1670 description="Defines the VR0 parameter of the Goodwin potential", & 1671 usage="VR0 {real}", type_of_var=real_t, & 1672 n_var=1, unit_str="K_e") 1673 CALL section_add_keyword(section, keyword) 1674 CALL keyword_release(keyword) 1675 1676 CALL keyword_create(keyword, __LOCATION__, name="D", & 1677 description="Defines the D parameter of the Goodwin potential", & 1678 usage="D {real}", type_of_var=real_t, & 1679 n_var=1, unit_str="angstrom") 1680 CALL section_add_keyword(section, keyword) 1681 CALL keyword_release(keyword) 1682 1683 CALL keyword_create(keyword, __LOCATION__, name="DC", & 1684 description="Defines the DC parameter of the Goodwin potential", & 1685 usage="DC {real}", type_of_var=real_t, & 1686 n_var=1, unit_str="angstrom") 1687 CALL section_add_keyword(section, keyword) 1688 CALL keyword_release(keyword) 1689 1690 CALL keyword_create(keyword, __LOCATION__, name="M", & 1691 description="Defines the M parameter of the Goodwin potential", & 1692 usage="M {real}", type_of_var=integer_t, & 1693 n_var=1) 1694 CALL section_add_keyword(section, keyword) 1695 CALL keyword_release(keyword) 1696 1697 CALL keyword_create(keyword, __LOCATION__, name="MC", & 1698 description="Defines the MC parameter of the Goodwin potential", & 1699 usage="MC {real}", type_of_var=integer_t, & 1700 n_var=1) 1701 CALL section_add_keyword(section, keyword) 1702 CALL keyword_release(keyword) 1703 1704 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1705 description="Defines the cutoff parameter of the Goodwin potential", & 1706 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 1707 unit_str="angstrom"), & 1708 unit_str="angstrom") 1709 CALL section_add_keyword(section, keyword) 1710 CALL keyword_release(keyword) 1711 1712 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1713 description="Defines the lower bound of the potential. If not set the range is the"// & 1714 " full range generate by the spline", usage="RMIN {real}", & 1715 type_of_var=real_t, unit_str="angstrom") 1716 CALL section_add_keyword(section, keyword) 1717 CALL keyword_release(keyword) 1718 1719 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1720 description="Defines the upper bound of the potential. If not set the range is the"// & 1721 " full range generate by the spline", usage="RMAX {real}", & 1722 type_of_var=real_t, unit_str="angstrom") 1723 CALL section_add_keyword(section, keyword) 1724 CALL keyword_release(keyword) 1725 1726 END SUBROUTINE create_Goodwin_section 1727 1728! ************************************************************************************************** 1729!> \brief This section specifies the input parameters for IPBV potential type 1730!> \param section the section to create 1731!> \author teo 1732! ************************************************************************************************** 1733 SUBROUTINE create_ipbv_section(section) 1734 TYPE(section_type), POINTER :: section 1735 1736 CHARACTER(len=*), PARAMETER :: routineN = 'create_ipbv_section', & 1737 routineP = moduleN//':'//routineN 1738 1739 TYPE(keyword_type), POINTER :: keyword 1740 1741 CPASSERT(.NOT. ASSOCIATED(section)) 1742 CALL section_create(section, __LOCATION__, name="ipbv", & 1743 description="This section specifies the input parameters for IPBV potential type."// & 1744 "Functional form: Implicit table function.", & 1745 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1746 1747 NULLIFY (keyword) 1748 1749 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1750 description="Defines the atomic kind involved in the IPBV nonbond potential", & 1751 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1752 n_var=2) 1753 CALL section_add_keyword(section, keyword) 1754 CALL keyword_release(keyword) 1755 1756 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1757 description="Defines the cutoff parameter of the IPBV potential", & 1758 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 1759 unit_str="angstrom"), & 1760 unit_str="angstrom") 1761 CALL section_add_keyword(section, keyword) 1762 CALL keyword_release(keyword) 1763 1764 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1765 description="Defines the lower bound of the potential. If not set the range is the"// & 1766 " full range generate by the spline", usage="RMIN {real}", & 1767 type_of_var=real_t, unit_str="angstrom") 1768 CALL section_add_keyword(section, keyword) 1769 CALL keyword_release(keyword) 1770 1771 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1772 description="Defines the upper bound of the potential. If not set the range is the"// & 1773 " full range generate by the spline", usage="RMAX {real}", & 1774 type_of_var=real_t, unit_str="angstrom") 1775 CALL section_add_keyword(section, keyword) 1776 CALL keyword_release(keyword) 1777 1778 END SUBROUTINE create_ipbv_section 1779 1780! ************************************************************************************************** 1781!> \brief This section specifies the input parameters for BMHFT potential type 1782!> \param section the section to create 1783!> \author teo 1784! ************************************************************************************************** 1785 SUBROUTINE create_BMHFT_section(section) 1786 TYPE(section_type), POINTER :: section 1787 1788 CHARACTER(len=*), PARAMETER :: routineN = 'create_BMHFT_section', & 1789 routineP = moduleN//':'//routineN 1790 1791 TYPE(keyword_type), POINTER :: keyword 1792 1793 CPASSERT(.NOT. ASSOCIATED(section)) 1794 CALL section_create(section, __LOCATION__, name="BMHFT", & 1795 description="This section specifies the input parameters for BMHFT potential type."// & 1796 "Functional form: V(r) = A * EXP(-B*r) - C/r^6 - D/r^8."// & 1797 "Values available inside cp2k only for the Na/Cl pair.", & 1798 citations=(/Tosi1964a, Tosi1964b/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 1799 1800 NULLIFY (keyword) 1801 1802 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1803 description="Defines the atomic kind involved in the BMHFT nonbond potential", & 1804 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1805 n_var=2) 1806 CALL section_add_keyword(section, keyword) 1807 CALL keyword_release(keyword) 1808 1809 CALL keyword_create(keyword, __LOCATION__, name="MAP_ATOMS", & 1810 description="Defines the kinds for which internally is defined the BMHFT nonbond potential"// & 1811 " at the moment only Na and Cl.", & 1812 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1813 n_var=2) 1814 CALL section_add_keyword(section, keyword) 1815 CALL keyword_release(keyword) 1816 1817 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1818 description="Defines the cutoff parameter of the BMHFT potential", & 1819 usage="RCUT {real}", default_r_val=7.8_dp, & 1820 unit_str="angstrom") 1821 CALL section_add_keyword(section, keyword) 1822 CALL keyword_release(keyword) 1823 1824 CALL keyword_create(keyword, __LOCATION__, name="A", & 1825 description="Defines the A parameter of the Fumi-Tosi Potential", & 1826 usage="A {real}", type_of_var=real_t, & 1827 n_var=1, unit_str="hartree") 1828 CALL section_add_keyword(section, keyword) 1829 CALL keyword_release(keyword) 1830 1831 CALL keyword_create(keyword, __LOCATION__, name="B", & 1832 description="Defines the B parameter of the Fumi-Tosi Potential", & 1833 usage="B {real}", type_of_var=real_t, & 1834 n_var=1, unit_str="angstrom^-1") 1835 CALL section_add_keyword(section, keyword) 1836 CALL keyword_release(keyword) 1837 1838 CALL keyword_create(keyword, __LOCATION__, name="C", & 1839 description="Defines the C parameter of the Fumi-Tosi Potential", & 1840 usage="C {real}", type_of_var=real_t, & 1841 n_var=1, unit_str="hartree*angstrom^6") 1842 CALL section_add_keyword(section, keyword) 1843 CALL keyword_release(keyword) 1844 1845 CALL keyword_create(keyword, __LOCATION__, name="D", & 1846 description="Defines the D parameter of the Fumi-Tosi Potential", & 1847 usage="D {real}", type_of_var=real_t, & 1848 n_var=1, unit_str="hartree*angstrom^8") 1849 CALL section_add_keyword(section, keyword) 1850 CALL keyword_release(keyword) 1851 1852 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1853 description="Defines the lower bound of the potential. If not set the range is the"// & 1854 " full range generate by the spline", usage="RMIN {real}", & 1855 type_of_var=real_t, unit_str="angstrom") 1856 CALL section_add_keyword(section, keyword) 1857 CALL keyword_release(keyword) 1858 1859 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1860 description="Defines the upper bound of the potential. If not set the range is the"// & 1861 " full range generate by the spline", usage="RMAX {real}", & 1862 type_of_var=real_t, unit_str="angstrom") 1863 CALL section_add_keyword(section, keyword) 1864 CALL keyword_release(keyword) 1865 1866 END SUBROUTINE create_BMHFT_section 1867 1868! ************************************************************************************************** 1869!> \brief This section specifies the input parameters for BMHFTD potential type 1870!> \param section the section to create 1871!> \author Mathieu Salanne 05.2010 1872! ************************************************************************************************** 1873 SUBROUTINE create_BMHFTD_section(section) 1874 TYPE(section_type), POINTER :: section 1875 1876 CHARACTER(len=*), PARAMETER :: routineN = 'create_BMHFTD_section', & 1877 routineP = moduleN//':'//routineN 1878 1879 TYPE(keyword_type), POINTER :: keyword 1880 1881 CPASSERT(.NOT. ASSOCIATED(section)) 1882 CALL section_create(section, __LOCATION__, name="BMHFTD", & 1883 description="This section specifies the input parameters for BMHFTD potential type."// & 1884 "Functional form: V(r) = A*exp(-B*r) - f_6*(r)C/r^6 - f_8(r)*D/r^8."// & 1885 "where f_order(r)=1-exp(-BD * r) * \sum_{k=0}^order (BD * r)^k / k! ."// & 1886 "(Tang-Toennies damping function)"// & 1887 "No values available inside cp2k.", & 1888 citations=(/Tosi1964a, Tosi1964b/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 1889 1890 NULLIFY (keyword) 1891 1892 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1893 description="Defines the atomic kind involved in the BMHFTD nonbond potential", & 1894 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1895 n_var=2) 1896 CALL section_add_keyword(section, keyword) 1897 CALL keyword_release(keyword) 1898 1899 CALL keyword_create(keyword, __LOCATION__, name="MAP_ATOMS", & 1900 description="Defines the kinds for which internally is defined the BMHFTD nonbond potential"// & 1901 " at the moment no species included.", & 1902 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 1903 n_var=2) 1904 CALL section_add_keyword(section, keyword) 1905 CALL keyword_release(keyword) 1906 1907 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 1908 description="Defines the cutoff parameter of the BMHFTD potential", & 1909 usage="RCUT {real}", default_r_val=7.8_dp, & 1910 unit_str="angstrom") 1911 CALL section_add_keyword(section, keyword) 1912 CALL keyword_release(keyword) 1913 1914 CALL keyword_create(keyword, __LOCATION__, name="A", & 1915 description="Defines the A parameter of the dispersion-damped Fumi-Tosi Potential", & 1916 usage="A {real}", type_of_var=real_t, & 1917 n_var=1, unit_str="hartree") 1918 CALL section_add_keyword(section, keyword) 1919 CALL keyword_release(keyword) 1920 1921 CALL keyword_create(keyword, __LOCATION__, name="B", & 1922 description="Defines the B parameter of the dispersion-damped Fumi-Tosi Potential", & 1923 usage="B {real}", type_of_var=real_t, & 1924 n_var=1, unit_str="angstrom^-1") 1925 CALL section_add_keyword(section, keyword) 1926 CALL keyword_release(keyword) 1927 1928 CALL keyword_create(keyword, __LOCATION__, name="C", & 1929 description="Defines the C parameter of the dispersion-damped Fumi-Tosi Potential", & 1930 usage="C {real}", type_of_var=real_t, & 1931 n_var=1, unit_str="hartree*angstrom^6") 1932 CALL section_add_keyword(section, keyword) 1933 CALL keyword_release(keyword) 1934 1935 CALL keyword_create(keyword, __LOCATION__, name="D", & 1936 description="Defines the D parameter of the dispersion-damped Fumi-Tosi Potential", & 1937 usage="D {real}", type_of_var=real_t, & 1938 n_var=1, unit_str="hartree*angstrom^8") 1939 CALL section_add_keyword(section, keyword) 1940 CALL keyword_release(keyword) 1941 1942 CALL keyword_create(keyword, __LOCATION__, name="BD", & 1943 description="Defines the BD parameter of the dispersion-damped Fumi-Tosi Potential", & 1944 usage="D {real}", type_of_var=real_t, & 1945 n_var=1, unit_str="angstrom^-1") 1946 CALL section_add_keyword(section, keyword) 1947 CALL keyword_release(keyword) 1948 1949 CALL keyword_create(keyword, __LOCATION__, name="ORDER", & 1950 description="Defines the order for this damping.", & 1951 usage="ORDER {integer}", type_of_var=integer_t, & 1952 n_var=1, default_i_val=3) 1953 CALL section_add_keyword(section, keyword) 1954 CALL keyword_release(keyword) 1955 1956 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 1957 description="Defines the lower bound of the potential. If not set the range is the"// & 1958 " full range generate by the spline", usage="RMIN {real}", & 1959 type_of_var=real_t, unit_str="angstrom") 1960 CALL section_add_keyword(section, keyword) 1961 CALL keyword_release(keyword) 1962 1963 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 1964 description="Defines the upper bound of the potential. If not set the range is the"// & 1965 " full range generate by the spline", usage="RMAX {real}", & 1966 type_of_var=real_t, unit_str="angstrom") 1967 CALL section_add_keyword(section, keyword) 1968 CALL keyword_release(keyword) 1969 1970 END SUBROUTINE create_BMHFTD_section 1971 1972! ************************************************************************************************** 1973!> \brief This section specifies the input parameters for Buckingham 4 ranges potential type 1974!> \param section the section to create 1975!> \author MI 1976! ************************************************************************************************** 1977 SUBROUTINE create_Buck4r_section(section) 1978 TYPE(section_type), POINTER :: section 1979 1980 CHARACTER(len=*), PARAMETER :: routineN = 'create_Buck4r_section', & 1981 routineP = moduleN//':'//routineN 1982 1983 TYPE(keyword_type), POINTER :: keyword 1984 1985 CPASSERT(.NOT. ASSOCIATED(section)) 1986 CALL section_create(section, __LOCATION__, name="BUCK4RANGES", & 1987 description="This section specifies the input parameters for the Buckingham 4-ranges"// & 1988 " potential type."// & 1989 " Functional form:<ul>"// & 1990 "<li>V(r) = A*EXP(-B*r) for r < r<sub>1</sub></li>"// & 1991 "<li>V(r) = Sum_n POLY1(n)*r<sup>n</sup> for r<sub>1</sub> ≤ r < r<sub>2</sub></li>"// & 1992 "<li>V(r) = Sum_n POLY2(n)*r<sup>n</sup> for r<sub>2</sub> ≤ r < r<sub>3</sub></li>"// & 1993 "<li>V(r) = -C/r<sup>6</sup> for r ≥ r<sub>3</sub></li></ul>", & 1994 n_keywords=1, n_subsections=0, repeats=.TRUE.) 1995 1996 NULLIFY (keyword) 1997 1998 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 1999 description="Defines the atomic kind involved in the nonbond potential", & 2000 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 2001 n_var=2) 2002 CALL section_add_keyword(section, keyword) 2003 CALL keyword_release(keyword) 2004 2005 CALL keyword_create(keyword, __LOCATION__, name="A", & 2006 description="Defines the A parameter of the Buckingham potential", & 2007 usage="A {real}", type_of_var=real_t, & 2008 n_var=1, unit_str="K_e") 2009 CALL section_add_keyword(section, keyword) 2010 CALL keyword_release(keyword) 2011 2012 CALL keyword_create(keyword, __LOCATION__, name="B", & 2013 description="Defines the B parameter of the Buckingham potential", & 2014 usage="B {real}", type_of_var=real_t, & 2015 n_var=1, unit_str="angstrom^-1") 2016 CALL section_add_keyword(section, keyword) 2017 CALL keyword_release(keyword) 2018 2019 CALL keyword_create(keyword, __LOCATION__, name="C", & 2020 description="Defines the C parameter of the Buckingham potential", & 2021 usage="C {real}", type_of_var=real_t, & 2022 n_var=1, unit_str="K_e*angstrom^6") 2023 CALL section_add_keyword(section, keyword) 2024 CALL keyword_release(keyword) 2025 2026 CALL keyword_create(keyword, __LOCATION__, name="R1", & 2027 description="Defines the upper bound of the first range ", & 2028 usage="R1 {real}", type_of_var=real_t, & 2029 n_var=1, unit_str="angstrom") 2030 CALL section_add_keyword(section, keyword) 2031 CALL keyword_release(keyword) 2032 2033 CALL keyword_create(keyword, __LOCATION__, name="R2", & 2034 description="Defines the upper bound of the second range ", & 2035 usage="R2 {real}", type_of_var=real_t, & 2036 n_var=1, unit_str="angstrom") 2037 CALL section_add_keyword(section, keyword) 2038 CALL keyword_release(keyword) 2039 2040 CALL keyword_create(keyword, __LOCATION__, name="R3", & 2041 description="Defines the upper bound of the third range ", & 2042 usage="R3 {real}", type_of_var=real_t, & 2043 n_var=1, unit_str="angstrom") 2044 CALL section_add_keyword(section, keyword) 2045 CALL keyword_release(keyword) 2046 2047 CALL keyword_create(keyword, __LOCATION__, name="POLY1", & 2048 description="Coefficients of the polynomial used in the second range"// & 2049 "This keyword can be repeated several times.", & 2050 usage="POLY1 C1 C2 C3 ..", & 2051 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.TRUE.) 2052 CALL section_add_keyword(section, keyword) 2053 CALL keyword_release(keyword) 2054 2055 CALL keyword_create(keyword, __LOCATION__, name="POLY2", & 2056 description="Coefficients of the polynomial used in the third range"// & 2057 "This keyword can be repeated several times.", & 2058 usage="POLY1 C1 C2 C3 ..", & 2059 n_var=-1, unit_str="K_e", type_of_var=real_t, repeats=.TRUE.) 2060 CALL section_add_keyword(section, keyword) 2061 CALL keyword_release(keyword) 2062 2063 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 2064 description="Defines the cutoff parameter of the Buckingham potential", & 2065 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 2066 unit_str="angstrom"), & 2067 unit_str="angstrom") 2068 CALL section_add_keyword(section, keyword) 2069 CALL keyword_release(keyword) 2070 2071 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 2072 description="Defines the lower bound of the potential. If not set the range is the"// & 2073 " full range generate by the spline", usage="RMIN {real}", & 2074 type_of_var=real_t, unit_str="angstrom") 2075 CALL section_add_keyword(section, keyword) 2076 CALL keyword_release(keyword) 2077 2078 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 2079 description="Defines the upper bound of the potential. If not set the range is the"// & 2080 " full range generate by the spline", usage="RMAX {real}", & 2081 type_of_var=real_t, unit_str="angstrom") 2082 CALL section_add_keyword(section, keyword) 2083 CALL keyword_release(keyword) 2084 2085 END SUBROUTINE create_Buck4r_section 2086 2087! ************************************************************************************************** 2088!> \brief This section specifies the input parameters for Buckingham + Morse potential type 2089!> \param section the section to create 2090!> \author MI 2091! ************************************************************************************************** 2092 SUBROUTINE create_Buckmorse_section(section) 2093 TYPE(section_type), POINTER :: section 2094 2095 CHARACTER(len=*), PARAMETER :: routineN = 'create_Buckmorse_section', & 2096 routineP = moduleN//':'//routineN 2097 2098 TYPE(keyword_type), POINTER :: keyword 2099 2100 CPASSERT(.NOT. ASSOCIATED(section)) 2101 CALL section_create( & 2102 section, __LOCATION__, name="BUCKMORSE", & 2103 description="This section specifies the input parameters for"// & 2104 " Buckingham plus Morse potential type "// & 2105 " 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)]}.", & 2106 citations=(/Yamada2000/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 2107 2108 NULLIFY (keyword) 2109 2110 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 2111 description="Defines the atomic kind involved in the nonbond potential", & 2112 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 2113 n_var=2) 2114 CALL section_add_keyword(section, keyword) 2115 CALL keyword_release(keyword) 2116 2117 CALL keyword_create(keyword, __LOCATION__, name="F0", & 2118 description="Defines the f0 parameter of Buckingham+Morse potential", & 2119 usage="F0 {real}", type_of_var=real_t, & 2120 n_var=1, unit_str="K_e*angstrom^-1") 2121 CALL section_add_keyword(section, keyword) 2122 CALL keyword_release(keyword) 2123 2124 CALL keyword_create(keyword, __LOCATION__, name="A1", & 2125 description="Defines the A1 parameter of Buckingham+Morse potential", & 2126 usage="A1 {real}", type_of_var=real_t, & 2127 n_var=1, unit_str="angstrom") 2128 CALL section_add_keyword(section, keyword) 2129 CALL keyword_release(keyword) 2130 2131 CALL keyword_create(keyword, __LOCATION__, name="A2", & 2132 description="Defines the A2 parameter of Buckingham+Morse potential", & 2133 usage="A2 {real}", type_of_var=real_t, & 2134 n_var=1, unit_str="angstrom") 2135 CALL section_add_keyword(section, keyword) 2136 CALL keyword_release(keyword) 2137 2138 CALL keyword_create(keyword, __LOCATION__, name="B1", & 2139 description="Defines the B1 parameter of Buckingham+Morse potential", & 2140 usage="B1 {real}", type_of_var=real_t, & 2141 n_var=1, unit_str="angstrom") 2142 CALL section_add_keyword(section, keyword) 2143 CALL keyword_release(keyword) 2144 2145 CALL keyword_create(keyword, __LOCATION__, name="B2", & 2146 description="Defines the B2 parameter of Buckingham+Morse potential", & 2147 usage="B2 {real}", type_of_var=real_t, & 2148 n_var=1, unit_str="angstrom") 2149 CALL section_add_keyword(section, keyword) 2150 CALL keyword_release(keyword) 2151 2152 CALL keyword_create(keyword, __LOCATION__, name="C", & 2153 description="Defines the C parameter of Buckingham+Morse potential", & 2154 usage="C {real}", type_of_var=real_t, & 2155 n_var=1, unit_str="K_e*angstrom^6") 2156 CALL section_add_keyword(section, keyword) 2157 CALL keyword_release(keyword) 2158 2159 CALL keyword_create(keyword, __LOCATION__, name="D", & 2160 description="Defines the amplitude for the Morse part ", & 2161 usage="D {real}", type_of_var=real_t, & 2162 n_var=1, unit_str="K_e") 2163 CALL section_add_keyword(section, keyword) 2164 CALL keyword_release(keyword) 2165 2166 CALL keyword_create(keyword, __LOCATION__, name="R0", & 2167 description="Defines the equilibrium distance for the Morse part ", & 2168 usage="R0 {real}", type_of_var=real_t, & 2169 n_var=1, unit_str="angstrom") 2170 CALL section_add_keyword(section, keyword) 2171 CALL keyword_release(keyword) 2172 2173 CALL keyword_create(keyword, __LOCATION__, name="Beta", & 2174 description="Defines the width for the Morse part ", & 2175 usage="Beta {real}", type_of_var=real_t, & 2176 n_var=1, unit_str="angstrom^-1") 2177 CALL section_add_keyword(section, keyword) 2178 CALL keyword_release(keyword) 2179 2180 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 2181 description="Defines the cutoff parameter of the Buckingham potential", & 2182 usage="RCUT {real}", default_r_val=cp_unit_to_cp2k(value=10.0_dp, & 2183 unit_str="angstrom"), & 2184 unit_str="angstrom") 2185 CALL section_add_keyword(section, keyword) 2186 CALL keyword_release(keyword) 2187 2188 CALL keyword_create(keyword, __LOCATION__, name="RMIN", & 2189 description="Defines the lower bound of the potential. If not set the range is the"// & 2190 " full range generate by the spline", usage="RMIN {real}", & 2191 type_of_var=real_t, unit_str="angstrom") 2192 CALL section_add_keyword(section, keyword) 2193 CALL keyword_release(keyword) 2194 2195 CALL keyword_create(keyword, __LOCATION__, name="RMAX", & 2196 description="Defines the upper bound of the potential. If not set the range is the"// & 2197 " full range generate by the spline", usage="RMAX {real}", & 2198 type_of_var=real_t, unit_str="angstrom") 2199 CALL section_add_keyword(section, keyword) 2200 CALL keyword_release(keyword) 2201 2202 END SUBROUTINE create_Buckmorse_section 2203 2204! ************************************************************************************************** 2205!> \brief This section specifies the input parameters for Tersoff potential type 2206!> (Tersoff, J. PRB 39(8), 5566, 1989) 2207!> \param section ... 2208! ************************************************************************************************** 2209 SUBROUTINE create_Tersoff_section(section) 2210 TYPE(section_type), POINTER :: section 2211 2212 CHARACTER(len=*), PARAMETER :: routineN = 'create_Tersoff_section', & 2213 routineP = moduleN//':'//routineN 2214 2215 TYPE(keyword_type), POINTER :: keyword 2216 2217 CPASSERT(.NOT. ASSOCIATED(section)) 2218 CALL section_create(section, __LOCATION__, name="TERSOFF", & 2219 description="This section specifies the input parameters for Tersoff potential type.", & 2220 citations=(/Tersoff1988/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 2221 2222 NULLIFY (keyword) 2223 2224 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 2225 description="Defines the atomic kind involved in the nonbond potential", & 2226 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 2227 n_var=2) 2228 CALL section_add_keyword(section, keyword) 2229 CALL keyword_release(keyword) 2230 2231 CALL keyword_create(keyword, __LOCATION__, name="A", & 2232 description="Defines the A parameter of Tersoff potential", & 2233 usage="A {real}", type_of_var=real_t, & 2234 default_r_val=cp_unit_to_cp2k(value=1.8308E3_dp, & 2235 unit_str="eV"), & 2236 n_var=1, unit_str="eV") 2237 CALL section_add_keyword(section, keyword) 2238 CALL keyword_release(keyword) 2239 2240 CALL keyword_create(keyword, __LOCATION__, name="B", & 2241 description="Defines the B parameter of Tersoff potential", & 2242 usage="B {real}", type_of_var=real_t, & 2243 default_r_val=cp_unit_to_cp2k(value=4.7118E2_dp, & 2244 unit_str="eV"), & 2245 n_var=1, unit_str="eV") 2246 CALL section_add_keyword(section, keyword) 2247 CALL keyword_release(keyword) 2248 2249 CALL keyword_create(keyword, __LOCATION__, name="lambda1", & 2250 description="Defines the lambda1 parameter of Tersoff potential", & 2251 usage="lambda1 {real}", type_of_var=real_t, & 2252 default_r_val=cp_unit_to_cp2k(value=2.4799_dp, & 2253 unit_str="angstrom^-1"), & 2254 n_var=1, unit_str="angstrom^-1") 2255 CALL section_add_keyword(section, keyword) 2256 CALL keyword_release(keyword) 2257 2258 CALL keyword_create(keyword, __LOCATION__, name="lambda2", & 2259 description="Defines the lambda2 parameter of Tersoff potential", & 2260 usage="lambda2 {real}", type_of_var=real_t, & 2261 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, & 2262 unit_str="angstrom^-1"), & 2263 n_var=1, unit_str="angstrom^-1") 2264 CALL section_add_keyword(section, keyword) 2265 CALL keyword_release(keyword) 2266 2267 CALL keyword_create(keyword, __LOCATION__, name="alpha", & 2268 description="Defines the alpha parameter of Tersoff potential", & 2269 usage="alpha {real}", type_of_var=real_t, & 2270 default_r_val=0.0_dp, & 2271 n_var=1) 2272 CALL section_add_keyword(section, keyword) 2273 CALL keyword_release(keyword) 2274 2275 CALL keyword_create(keyword, __LOCATION__, name="beta", & 2276 description="Defines the beta parameter of Tersoff potential", & 2277 usage="beta {real}", type_of_var=real_t, & 2278 default_r_val=1.0999E-6_dp, & 2279 n_var=1, unit_str="") 2280 CALL section_add_keyword(section, keyword) 2281 CALL keyword_release(keyword) 2282 2283 CALL keyword_create(keyword, __LOCATION__, name="n", & 2284 description="Defines the n parameter of Tersoff potential", & 2285 usage="n {real}", type_of_var=real_t, & 2286 default_r_val=7.8734E-1_dp, & 2287 n_var=1, unit_str="") 2288 CALL section_add_keyword(section, keyword) 2289 CALL keyword_release(keyword) 2290 2291 CALL keyword_create(keyword, __LOCATION__, name="c", & 2292 description="Defines the c parameter of Tersoff potential", & 2293 usage="c {real}", type_of_var=real_t, & 2294 default_r_val=1.0039E5_dp, & 2295 n_var=1, unit_str="") 2296 CALL section_add_keyword(section, keyword) 2297 CALL keyword_release(keyword) 2298 2299 CALL keyword_create(keyword, __LOCATION__, name="d", & 2300 description="Defines the d parameter of Tersoff potential", & 2301 usage="d {real}", type_of_var=real_t, & 2302 default_r_val=1.6218E1_dp, & 2303 n_var=1, unit_str="") 2304 CALL section_add_keyword(section, keyword) 2305 CALL keyword_release(keyword) 2306 2307 CALL keyword_create(keyword, __LOCATION__, name="h", & 2308 description="Defines the h parameter of Tersoff potential", & 2309 usage="h {real}", type_of_var=real_t, & 2310 default_r_val=-5.9826E-1_dp, & 2311 n_var=1, unit_str="") 2312 CALL section_add_keyword(section, keyword) 2313 CALL keyword_release(keyword) 2314 2315 CALL keyword_create(keyword, __LOCATION__, name="lambda3", & 2316 description="Defines the lambda3 parameter of Tersoff potential", & 2317 usage="lambda3 {real}", type_of_var=real_t, & 2318 default_r_val=cp_unit_to_cp2k(value=1.7322_dp, & 2319 unit_str="angstrom^-1"), & 2320 n_var=1, unit_str="angstrom^-1") 2321 CALL section_add_keyword(section, keyword) 2322 CALL keyword_release(keyword) 2323 2324 CALL keyword_create(keyword, __LOCATION__, name="bigR", & 2325 description="Defines the bigR parameter of Tersoff potential", & 2326 usage="bigR {real}", type_of_var=real_t, & 2327 default_r_val=cp_unit_to_cp2k(value=2.85_dp, & 2328 unit_str="angstrom"), & 2329 n_var=1, unit_str="angstrom") 2330 CALL section_add_keyword(section, keyword) 2331 CALL keyword_release(keyword) 2332 2333 CALL keyword_create(keyword, __LOCATION__, name="bigD", & 2334 description="Defines the D parameter of Tersoff potential", & 2335 usage="bigD {real}", type_of_var=real_t, & 2336 default_r_val=cp_unit_to_cp2k(value=0.15_dp, & 2337 unit_str="angstrom"), & 2338 n_var=1, unit_str="angstrom") 2339 CALL section_add_keyword(section, keyword) 2340 CALL keyword_release(keyword) 2341 2342 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 2343 description="Defines the cutoff parameter of the tersoff potential. "// & 2344 " This parameter is in principle already defined by the values of "// & 2345 " bigD and bigR. But it is necessary to define it when using the tersoff "// & 2346 " in conjunction with other potentials (for the same atomic pair) in order to have"// & 2347 " the same consistent definition of RCUT for all potentials.", & 2348 usage="RCUT {real}", type_of_var=real_t, & 2349 n_var=1, unit_str="angstrom") 2350 CALL section_add_keyword(section, keyword) 2351 CALL keyword_release(keyword) 2352 2353 END SUBROUTINE create_Tersoff_section 2354 2355! ************************************************************************************************** 2356!> \brief This section specifies the input parameters for Siepmann-Sprik 2357!> potential type 2358!> (Siepmann and Sprik, J. Chem. Phys. 102(1) 511, 1995) 2359!> \param section ... 2360! ************************************************************************************************** 2361 SUBROUTINE create_Siepmann_section(section) 2362 TYPE(section_type), POINTER :: section 2363 2364 CHARACTER(len=*), PARAMETER :: routineN = 'create_Siepmann_section', & 2365 routineP = moduleN//':'//routineN 2366 2367 TYPE(keyword_type), POINTER :: keyword 2368 2369 CPASSERT(.NOT. ASSOCIATED(section)) 2370 CALL section_create(section, __LOCATION__, name="SIEPMANN", & 2371 description="This section specifies the input parameters for the"// & 2372 " Siepmann-Sprik potential type. Consists of 4 terms:"// & 2373 " T1+T2+T3+T4. The terms T1=A/rij^alpha and T2=-C/rij^6"// & 2374 " have to be given via the GENPOT section. The terms T3+T4"// & 2375 " are obtained from the SIEPMANN section. The Siepmann-Sprik"// & 2376 " potential is designed for water-metal chemisorption.", & 2377 citations=(/Siepmann1995/), n_keywords=1, n_subsections=0, repeats=.TRUE.) 2378 2379 NULLIFY (keyword) 2380 2381 CALL keyword_create(keyword, __LOCATION__, name="ATOMS", & 2382 description="Defines the atomic kind involved in the nonbond potential", & 2383 usage="ATOMS {KIND1} {KIND2}", type_of_var=char_t, & 2384 n_var=2) 2385 CALL section_add_keyword(section, keyword) 2386 CALL keyword_release(keyword) 2387 2388 CALL keyword_create(keyword, __LOCATION__, name="B", & 2389 description="Defines the B parameter of Siepmann potential", & 2390 usage="B {real}", type_of_var=real_t, & 2391 default_r_val=cp_unit_to_cp2k(value=0.6_dp, & 2392 unit_str="angstrom"), & 2393 n_var=1, unit_str="angstrom") 2394 CALL section_add_keyword(section, keyword) 2395 CALL keyword_release(keyword) 2396 2397 CALL keyword_create(keyword, __LOCATION__, name="D", & 2398 description="Defines the D parameter of Siepmann potential", & 2399 usage="D {real}", type_of_var=real_t, & 2400 default_r_val=cp_unit_to_cp2k(value=3.688388_dp, & 2401 unit_str="internal_cp2k"), & 2402 n_var=1, unit_str="internal_cp2k") 2403 CALL section_add_keyword(section, keyword) 2404 CALL keyword_release(keyword) 2405 2406 CALL keyword_create(keyword, __LOCATION__, name="E", & 2407 description="Defines the E parameter of Siepmann potential", & 2408 usage="E {real}", type_of_var=real_t, & 2409 default_r_val=cp_unit_to_cp2k(value=9.069025_dp, & 2410 unit_str="internal_cp2k"), & 2411 n_var=1, unit_str="internal_cp2k") 2412 CALL section_add_keyword(section, keyword) 2413 CALL keyword_release(keyword) 2414 2415 CALL keyword_create(keyword, __LOCATION__, name="F", & 2416 description="Defines the F parameter of Siepmann potential", & 2417 usage="B {real}", type_of_var=real_t, & 2418 default_r_val=13.3_dp, n_var=1) 2419 CALL section_add_keyword(section, keyword) 2420 CALL keyword_release(keyword) 2421! 2422 CALL keyword_create(keyword, __LOCATION__, name="beta", & 2423 description="Defines the beta parameter of Siepmann potential", & 2424 usage="beta {real}", type_of_var=real_t, & 2425 default_r_val=10.0_dp, n_var=1) 2426 CALL section_add_keyword(section, keyword) 2427 CALL keyword_release(keyword) 2428! 2429 CALL keyword_create(keyword, __LOCATION__, name="RCUT", & 2430 description="Defines the cutoff parameter of Siepmann potential", & 2431 usage="RCUT {real}", type_of_var=real_t, & 2432 default_r_val=cp_unit_to_cp2k(value=3.2_dp, & 2433 unit_str="angstrom"), & 2434 n_var=1, unit_str="angstrom") 2435 CALL section_add_keyword(section, keyword) 2436 CALL keyword_release(keyword) 2437! 2438 CALL keyword_create(keyword, __LOCATION__, name="ALLOW_OH_FORMATION", & 2439 description=" The Siepmann-Sprik potential is actually designed for intact"// & 2440 " water molecules only. If water is treated at the QM level,"// & 2441 " water molecules can potentially dissociate, i.e."// & 2442 " some O-H bonds might be stretched leading temporarily"// & 2443 " to the formation of OH- ions. This keyword allows the"// & 2444 " the formation of such ions. The T3 term (dipole term)"// & 2445 " is then switched off for evaluating the interaction"// & 2446 " between the OH- ion and the metal.", & 2447 usage="ALLOW_OH_FORMATION TRUE", & 2448 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 2449 CALL section_add_keyword(section, keyword) 2450 CALL keyword_release(keyword) 2451 2452 CALL keyword_create(keyword, __LOCATION__, name="ALLOW_H3O_FORMATION", & 2453 description=" The Siepmann-Sprik potential is designed for intact water"// & 2454 " molecules only. If water is treated at the QM level"// & 2455 " and an acid is present, hydronium ions might occur."// & 2456 " This keyword allows the formation of hydronium ions."// & 2457 " The T3 term (dipole term) is switched off for evaluating"// & 2458 " the interaction between hydronium and the metal.", & 2459 usage="ALLOW_H3O_FORMATION TRUE", & 2460 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 2461 CALL section_add_keyword(section, keyword) 2462 CALL keyword_release(keyword) 2463 2464 CALL keyword_create(keyword, __LOCATION__, name="ALLOW_O_FORMATION", & 2465 description=" The Siepmann-Sprik potential is actually designed for intact"// & 2466 " water molecules only. If water is treated at the QM level,"// & 2467 " water molecules can potentially dissociate, i.e."// & 2468 " some O-H bonds might be stretched leading temporarily"// & 2469 " to the formation of O^2- ions. This keyword allows the"// & 2470 " the formation of such ions. The T3 term (dipole term)"// & 2471 " is then switched off for evaluating the interaction"// & 2472 " between the O^2- ion and the metal.", & 2473 usage="ALLOW_O2-_FORMATION TRUE", & 2474 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.) 2475 CALL section_add_keyword(section, keyword) 2476 CALL keyword_release(keyword) 2477 2478 END SUBROUTINE create_Siepmann_section 2479 2480! ************************************************************************************************** 2481!> \brief creates the input section for the qs part 2482!> \param print_key ... 2483!> \param label ... 2484!> \param print_level ... 2485!> \author teo 2486! ************************************************************************************************** 2487 SUBROUTINE create_dipoles_section(print_key, label, print_level) 2488 TYPE(section_type), POINTER :: print_key 2489 CHARACTER(LEN=*), INTENT(IN) :: label 2490 INTEGER, INTENT(IN) :: print_level 2491 2492 CHARACTER(len=*), PARAMETER :: routineN = 'create_dipoles_section', & 2493 routineP = moduleN//':'//routineN 2494 2495 TYPE(keyword_type), POINTER :: keyword 2496 2497 CPASSERT(.NOT. ASSOCIATED(print_key)) 2498 CALL cp_print_key_section_create(print_key, __LOCATION__, name=TRIM(label), & 2499 description="Section controlling the calculation of "//TRIM(label)//"."// & 2500 " Note that the result in the periodic case might be defined modulo a certain period,"// & 2501 " determined by the lattice vectors. During MD, this can lead to jumps.", & 2502 print_level=print_level, filename="__STD_OUT__") 2503 2504 NULLIFY (keyword) 2505 CALL keyword_create(keyword, __LOCATION__, & 2506 name="PERIODIC", & 2507 description="Use Berry phase formula (PERIODIC=T) or simple operator (PERIODIC=F). "// & 2508 "The latter normally requires that the CELL is periodic NONE.", & 2509 usage="PERIODIC {logical}", & 2510 repeats=.FALSE., & 2511 n_var=1, & 2512 default_l_val=.TRUE., lone_keyword_l_val=.TRUE.) 2513 CALL section_add_keyword(print_key, keyword) 2514 CALL keyword_release(keyword) 2515 2516 CALL keyword_create(keyword, __LOCATION__, name="REFERENCE", & 2517 variants=s2a("REF"), & 2518 description="Define the reference point for the calculation of the electrostatic moment.", & 2519 usage="REFERENCE COM", & 2520 enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), & 2521 enum_desc=s2a("Use Center of Mass", & 2522 "Use Center of Atomic Charges", & 2523 "Use User Defined Point (Keyword:REF_POINT)", & 2524 "Use Origin of Coordinate System"), & 2525 enum_i_vals=(/use_mom_ref_com, & 2526 use_mom_ref_coac, & 2527 use_mom_ref_user, & 2528 use_mom_ref_zero/), & 2529 default_i_val=use_mom_ref_zero) 2530 CALL section_add_keyword(print_key, keyword) 2531 CALL keyword_release(keyword) 2532 2533 CALL keyword_create(keyword, __LOCATION__, name="REFERENCE_POINT", & 2534 variants=s2a("REF_POINT"), & 2535 description="Fixed reference point for the calculations of the electrostatic moment.", & 2536 usage="REFERENCE_POINT x y z", & 2537 repeats=.FALSE., & 2538 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), & 2539 type_of_var=real_t, & 2540 unit_str='bohr') 2541 CALL section_add_keyword(print_key, keyword) 2542 CALL keyword_release(keyword) 2543 END SUBROUTINE create_dipoles_section 2544 2545END MODULE input_cp2k_mm 2546