LCOV - code coverage report
Current view: top level - src - input_cp2k_mm.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:b8e0b09) Lines: 1065 1065 100.0 %
Date: 2024-08-31 06:31:37 Functions: 39 39 100.0 %

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

Generated by: LCOV version 1.15