LCOV - code coverage report
Current view: top level - src - input_cp2k_se.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:4dc10b3) Lines: 155 155 100.0 %
Date: 2024-11-21 06:45:46 Functions: 8 8 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 function that build the semi empirical section of the input
      10             : !> \par History
      11             : !>      10.2005 moved out of input_cp2k [fawzi]
      12             : !>      07.2024 moved out of input_cp2k [JGH]
      13             : !> \author fawzi
      14             : ! **************************************************************************************************
      15             : MODULE input_cp2k_se
      16             :    USE cp_output_handling,              ONLY: cp_print_key_section_create,&
      17             :                                               high_print_level
      18             :    USE cp_units,                        ONLY: cp_unit_to_cp2k
      19             :    USE input_constants,                 ONLY: &
      20             :         do_se_is_kdso, do_se_is_kdso_d, do_se_is_slater, do_se_lr_ewald, do_se_lr_ewald_gks, &
      21             :         do_se_lr_ewald_r3, do_se_lr_none, gaussian, numerical, slater
      22             :    USE input_cp2k_mm,                   ONLY: create_neighbor_lists_section
      23             :    USE input_keyword_types,             ONLY: keyword_create,&
      24             :                                               keyword_release,&
      25             :                                               keyword_type
      26             :    USE input_section_types,             ONLY: section_add_keyword,&
      27             :                                               section_add_subsection,&
      28             :                                               section_create,&
      29             :                                               section_release,&
      30             :                                               section_type
      31             :    USE input_val_types,                 ONLY: char_t,&
      32             :                                               real_t
      33             :    USE kinds,                           ONLY: dp
      34             :    USE string_utilities,                ONLY: s2a
      35             : #include "./base/base_uses.f90"
      36             : 
      37             :    IMPLICIT NONE
      38             :    PRIVATE
      39             : 
      40             :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_se'
      41             : 
      42             :    PUBLIC :: create_se_control_section
      43             : 
      44             : CONTAINS
      45             : 
      46             : ! **************************************************************************************************
      47             : !> \brief ...
      48             : !> \param section ...
      49             : ! **************************************************************************************************
      50        8546 :    SUBROUTINE create_se_control_section(section)
      51             :       TYPE(section_type), POINTER                        :: section
      52             : 
      53             :       TYPE(keyword_type), POINTER                        :: keyword
      54             :       TYPE(section_type), POINTER                        :: subsection
      55             : 
      56        8546 :       NULLIFY (keyword)
      57        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
      58             :       CALL section_create(section, __LOCATION__, name="SE", &
      59             :                           description="Parameters needed to set up the Semi-empirical methods", &
      60        8546 :                           n_keywords=8, n_subsections=0, repeats=.FALSE.)
      61             : 
      62             :       CALL keyword_create(keyword, __LOCATION__, name="ORTHOGONAL_BASIS", &
      63             :                           description="Assume orthogonal basis set. This flag is overwritten by "// &
      64             :                           "methods with fixed orthogonal/non-orthogonal basis set.", &
      65        8546 :                           usage="ORTHOGONAL_BASIS", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
      66        8546 :       CALL section_add_keyword(section, keyword)
      67        8546 :       CALL keyword_release(keyword)
      68             : 
      69             :       CALL keyword_create(keyword, __LOCATION__, name="STO_NG", &
      70             :                           description="Provides the order of the Slater orbital expansion of Gaussian-Type Orbitals.", &
      71        8546 :                           usage="STO_NG", default_i_val=6)
      72        8546 :       CALL section_add_keyword(section, keyword)
      73        8546 :       CALL keyword_release(keyword)
      74             : 
      75             :       CALL keyword_create(keyword, __LOCATION__, name="ANALYTICAL_GRADIENTS", &
      76             :                           description="Nuclear Gradients are computed analytically or numerically", &
      77        8546 :                           usage="ANALYTICAL_GRADIENTS", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
      78        8546 :       CALL section_add_keyword(section, keyword)
      79        8546 :       CALL keyword_release(keyword)
      80             : 
      81             :       CALL keyword_create(keyword, __LOCATION__, name="DELTA", &
      82             :                           description="Step size in finite difference force calculation", &
      83        8546 :                           usage="DELTA {real} ", default_r_val=1.e-6_dp)
      84        8546 :       CALL section_add_keyword(section, keyword)
      85        8546 :       CALL keyword_release(keyword)
      86             : 
      87             :       CALL keyword_create(keyword, __LOCATION__, name="INTEGRAL_SCREENING", &
      88             :                           description="Specifies the functional form for the ", &
      89             :                           usage="INTEGRAL_SCREENING (KDSO|KDSO-D|SLATER)", &
      90             :                           enum_c_vals=s2a("KDSO", "KDSO-D", "SLATER"), &
      91             :                           enum_i_vals=(/do_se_IS_kdso, do_se_IS_kdso_d, do_se_IS_slater/), &
      92             :                           enum_desc=s2a("Uses the standard NDDO Klopman-Dewar-Sabelli-Ohno equation "// &
      93             :                                         "for the screening of the Coulomb interactions.", &
      94             :                                         "Uses a modified Klopman-Dewar-Sabelli-Ohno equation, dumping the screening "// &
      95             :                                         "parameter for the Coulomb interactions.", &
      96             :                                         "Uses an exponential Slater-type function for modelling the Coulomb interactions."), &
      97        8546 :                           default_i_val=do_se_IS_kdso)
      98        8546 :       CALL section_add_keyword(section, keyword)
      99        8546 :       CALL keyword_release(keyword)
     100             : 
     101             :       CALL keyword_create(keyword, __LOCATION__, name="PERIODIC", &
     102             :                           description="Specifies the type of treatment for the electrostatic long-range part "// &
     103             :                           "in semi-empirical calculations.", &
     104             :                           usage="PERIODIC (NONE|EWALD|EWALD_R3|EWALD_GKS)", &
     105             :                           enum_c_vals=s2a("NONE", "EWALD", "EWALD_R3", "EWALD_GKS"), &
     106             :                           enum_i_vals=(/do_se_lr_none, do_se_lr_ewald, do_se_lr_ewald_r3, do_se_lr_ewald_gks/), &
     107             :                           enum_desc=s2a("The long-range part is not explicitly treaten. The interaction "// &
     108             :                                         "depends uniquely on the Cutoffs used for the calculation.", &
     109             :                                         "Enables the usage of Multipoles Ewald summation schemes. The short-range part "// &
     110             :                                         "is tapered according the value of RC_COULOMB.", &
     111             :                                         "Enables the usage of Multipoles Ewald summation schemes together with a long-range "// &
     112             :                                         "treatment for the 1/R^3 term, deriving from the short-range component. This option "// &
     113             :                                         "is active only for K-DSO integral screening type.", &
     114             :                                         "Use Ewald directly in Coulomb integral evaluation, works only with Slater screening"), &
     115        8546 :                           default_i_val=do_se_lr_none)
     116        8546 :       CALL section_add_keyword(section, keyword)
     117        8546 :       CALL keyword_release(keyword)
     118             : 
     119             :       CALL keyword_create(keyword, __LOCATION__, name="FORCE_KDSO-D_EXCHANGE", &
     120             :                           description="This keywords forces the usage of the KDSO-D integral screening "// &
     121             :                           "for the Exchange integrals (default is to apply the screening only to the "// &
     122        8546 :                           "Coulomb integrals.", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
     123        8546 :       CALL section_add_keyword(section, keyword)
     124        8546 :       CALL keyword_release(keyword)
     125             : 
     126             :       CALL keyword_create(keyword, __LOCATION__, name="DISPERSION", &
     127             :                           description="Use dispersion correction", &
     128             :                           lone_keyword_l_val=.TRUE., &
     129        8546 :                           usage="DISPERSION", default_l_val=.FALSE.)
     130        8546 :       CALL section_add_keyword(section, keyword)
     131        8546 :       CALL keyword_release(keyword)
     132             : 
     133             :       CALL keyword_create(keyword, __LOCATION__, name="DISPERSION_PARAMETER_FILE", &
     134             :                           description="Specify file that contains the atomic dispersion parameters", &
     135             :                           usage="DISPERSION_PARAMETER_FILE filename", &
     136        8546 :                           n_var=1, type_of_var=char_t, default_c_val="")
     137        8546 :       CALL section_add_keyword(section, keyword)
     138        8546 :       CALL keyword_release(keyword)
     139             : 
     140             :       CALL keyword_create(keyword, __LOCATION__, name="DISPERSION_RADIUS", &
     141             :                           description="Define radius of dispersion interaction", &
     142        8546 :                           usage="DISPERSION_RADIUS", default_r_val=15._dp)
     143        8546 :       CALL section_add_keyword(section, keyword)
     144        8546 :       CALL keyword_release(keyword)
     145             : 
     146             :       CALL keyword_create(keyword, __LOCATION__, name="COORDINATION_CUTOFF", &
     147             :                           description="Define cutoff for coordination number calculation", &
     148        8546 :                           usage="COORDINATION_CUTOFF", default_r_val=1.e-6_dp)
     149        8546 :       CALL section_add_keyword(section, keyword)
     150        8546 :       CALL keyword_release(keyword)
     151             : 
     152             :       CALL keyword_create(keyword, __LOCATION__, name="D3_SCALING", &
     153             :                           description="Scaling parameters (s6,sr6,s8) for the D3 dispersion method,", &
     154        8546 :                           usage="D3_SCALING 1.0 1.0 1.0", n_var=3, default_r_vals=(/0.0_dp, 0.0_dp, 0.0_dp/))
     155        8546 :       CALL section_add_keyword(section, keyword)
     156        8546 :       CALL keyword_release(keyword)
     157             : 
     158        8546 :       NULLIFY (subsection)
     159        8546 :       CALL create_coulomb_section(subsection)
     160        8546 :       CALL section_add_subsection(section, subsection)
     161        8546 :       CALL section_release(subsection)
     162             : 
     163        8546 :       CALL create_exchange_section(subsection)
     164        8546 :       CALL section_add_subsection(section, subsection)
     165        8546 :       CALL section_release(subsection)
     166             : 
     167        8546 :       CALL create_screening_section(subsection)
     168        8546 :       CALL section_add_subsection(section, subsection)
     169        8546 :       CALL section_release(subsection)
     170             : 
     171        8546 :       CALL create_lr_corr_section(subsection)
     172        8546 :       CALL section_add_subsection(section, subsection)
     173        8546 :       CALL section_release(subsection)
     174             : 
     175        8546 :       CALL create_neighbor_lists_section(subsection)
     176        8546 :       CALL section_add_subsection(section, subsection)
     177        8546 :       CALL section_release(subsection)
     178             : 
     179        8546 :       CALL create_se_memory_section(subsection)
     180        8546 :       CALL section_add_subsection(section, subsection)
     181        8546 :       CALL section_release(subsection)
     182             : 
     183        8546 :       CALL create_se_print_section(subsection)
     184        8546 :       CALL section_add_subsection(section, subsection)
     185        8546 :       CALL section_release(subsection)
     186             : 
     187        8546 :       CALL create_se_ga_section(subsection)
     188        8546 :       CALL section_add_subsection(section, subsection)
     189        8546 :       CALL section_release(subsection)
     190             : 
     191        8546 :    END SUBROUTINE create_se_control_section
     192             : 
     193             : ! **************************************************************************************************
     194             : !> \brief Create the COULOMB se section
     195             : !> \param section the section to create
     196             : !> \date  03.2009
     197             : !> \author Teodoro Laino [tlaino]
     198             : ! **************************************************************************************************
     199        8546 :    SUBROUTINE create_lr_corr_section(section)
     200             :       TYPE(section_type), POINTER                        :: section
     201             : 
     202             :       TYPE(keyword_type), POINTER                        :: keyword
     203             : 
     204        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     205             :       CALL section_create(section, __LOCATION__, name="LR_CORRECTION", &
     206             :                           description="Setup parameters for the evaluation of the long-range correction term in SE "// &
     207        8546 :                           "calculations.", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     208        8546 :       NULLIFY (keyword)
     209             : 
     210             :       CALL keyword_create(keyword, __LOCATION__, name="CUTOFF", &
     211             :                           description="Atomic Cutoff Radius Cutoff for the evaluation of the long-ranbe correction integrals. ", &
     212             :                           usage="CUTOFF {real} ", unit_str="angstrom", &
     213        8546 :                           default_r_val=cp_unit_to_cp2k(value=6.0_dp, unit_str="angstrom"))
     214        8546 :       CALL section_add_keyword(section, keyword)
     215        8546 :       CALL keyword_release(keyword)
     216             : 
     217             :       CALL keyword_create(keyword, __LOCATION__, name="RC_TAPER", &
     218             :                           description="Atomic Cutoff Radius Cutoff for Tapering the long-range correction integrals. "// &
     219             :                           "If not specified it assumes the same value specified for the CUTOFF.", &
     220        8546 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     221        8546 :       CALL section_add_keyword(section, keyword)
     222        8546 :       CALL keyword_release(keyword)
     223             : 
     224             :       CALL keyword_create(keyword, __LOCATION__, name="RC_RANGE", &
     225             :                           description="Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), "// &
     226             :                           "where r0=2.0*RC_TAPER-20.0*RC_RANGE.", &
     227        8546 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     228        8546 :       CALL section_add_keyword(section, keyword)
     229        8546 :       CALL keyword_release(keyword)
     230             : 
     231        8546 :    END SUBROUTINE create_lr_corr_section
     232             : 
     233             : ! **************************************************************************************************
     234             : !> \brief Create the COULOMB se section
     235             : !> \param section the section to create
     236             : !> \date  03.2009
     237             : !> \author Teodoro Laino [tlaino]
     238             : ! **************************************************************************************************
     239        8546 :    SUBROUTINE create_coulomb_section(section)
     240             :       TYPE(section_type), POINTER                        :: section
     241             : 
     242             :       TYPE(keyword_type), POINTER                        :: keyword
     243             : 
     244        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     245             :       CALL section_create(section, __LOCATION__, name="COULOMB", &
     246             :                           description="Setup parameters for the evaluation of the COULOMB term in SE "// &
     247        8546 :                           "calculations.", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     248        8546 :       NULLIFY (keyword)
     249             : 
     250             :       CALL keyword_create( &
     251             :          keyword, __LOCATION__, name="CUTOFF", &
     252             :          description="Atomic Cutoff Radius Cutoff for the evaluation of the  Coulomb integrals. "// &
     253             :          "For non-periodic calculation the default value is exactly the full cell dimension, in order "// &
     254             :          "to evaluate all pair interactions. Instead, for periodic calculations the default numerical value is used.", &
     255             :          usage="CUTOFF {real} ", unit_str="angstrom", &
     256        8546 :          default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     257        8546 :       CALL section_add_keyword(section, keyword)
     258        8546 :       CALL keyword_release(keyword)
     259             : 
     260             :       CALL keyword_create(keyword, __LOCATION__, name="RC_TAPER", &
     261             :                           description="Atomic Cutoff Radius Cutoff for Tapering Coulomb integrals. "// &
     262             :                           "If not specified it assumes the same value specified for the CUTOFF.", &
     263        8546 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     264        8546 :       CALL section_add_keyword(section, keyword)
     265        8546 :       CALL keyword_release(keyword)
     266             : 
     267             :       CALL keyword_create(keyword, __LOCATION__, name="RC_RANGE", &
     268             :                           description="Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), "// &
     269             :                           "where r0=2.0*RC_TAPER-20.0*RC_RANGE.", &
     270        8546 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     271        8546 :       CALL section_add_keyword(section, keyword)
     272        8546 :       CALL keyword_release(keyword)
     273             : 
     274        8546 :    END SUBROUTINE create_coulomb_section
     275             : 
     276             : ! **************************************************************************************************
     277             : !> \brief Create the EXCHANGE se section
     278             : !> \param section the section to create
     279             : !> \date  03.2009
     280             : !> \author Teodoro Laino [tlaino]
     281             : ! **************************************************************************************************
     282        8546 :    SUBROUTINE create_exchange_section(section)
     283             :       TYPE(section_type), POINTER                        :: section
     284             : 
     285             :       TYPE(keyword_type), POINTER                        :: keyword
     286             : 
     287        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     288             :       CALL section_create(section, __LOCATION__, name="EXCHANGE", &
     289             :                           description="Setup parameters for the evaluation of the EXCHANGE and "// &
     290             :                           "core Hamiltonian terms in SE calculations.", n_keywords=0, n_subsections=1, &
     291        8546 :                           repeats=.FALSE.)
     292        8546 :       NULLIFY (keyword)
     293             : 
     294             :       CALL keyword_create(keyword, __LOCATION__, name="CUTOFF", &
     295             :                           description="Atomic Cutoff Radius Cutoff for the evaluation of the Exchange integrals. "// &
     296             :                           "For non-periodic calculation the default value is exactly the full cell dimension, in order "// &
     297             :                           "to evaluate all pair interactions. Instead, for periodic calculations the default is the "// &
     298             :                           "minimum value between 1/4 of the cell dimension and the value specified in input (either"// &
     299             :                           " explicitly defined or the default numerical value).", &
     300             :                           usage="CUTOFF {real} ", unit_str="angstrom", &
     301        8546 :                           default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     302        8546 :       CALL section_add_keyword(section, keyword)
     303        8546 :       CALL keyword_release(keyword)
     304             : 
     305             :       CALL keyword_create(keyword, __LOCATION__, name="RC_TAPER", &
     306             :                           description="Atomic Cutoff Radius Cutoff for Tapering Exchange integrals. "// &
     307             :                           "If not specified it assumes the same value specified for the CUTOFF.", &
     308        8546 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     309        8546 :       CALL section_add_keyword(section, keyword)
     310        8546 :       CALL keyword_release(keyword)
     311             : 
     312             :       CALL keyword_create(keyword, __LOCATION__, name="RC_RANGE", &
     313             :                           description="Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), "// &
     314             :                           "where r0=2.0*RC_TAPER-20.0*RC_RANGE.", &
     315        8546 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     316        8546 :       CALL section_add_keyword(section, keyword)
     317        8546 :       CALL keyword_release(keyword)
     318             : 
     319        8546 :    END SUBROUTINE create_exchange_section
     320             : 
     321             : ! **************************************************************************************************
     322             : !> \brief Create the SCREENING se section
     323             : !> \param section the section to create
     324             : !> \date  03.2009
     325             : !> \author Teodoro Laino [tlaino]
     326             : ! **************************************************************************************************
     327        8546 :    SUBROUTINE create_screening_section(section)
     328             :       TYPE(section_type), POINTER                        :: section
     329             : 
     330             :       TYPE(keyword_type), POINTER                        :: keyword
     331             : 
     332        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     333             :       CALL section_create(section, __LOCATION__, name="SCREENING", &
     334             :                           description="Setup parameters for the tapering of the Coulomb/Exchange Screening in "// &
     335        8546 :                           "KDSO-D integral scheme,", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     336        8546 :       NULLIFY (keyword)
     337             : 
     338             :       CALL keyword_create(keyword, __LOCATION__, name="RC_TAPER", &
     339             :                           description="Atomic Cutoff Radius Cutoff for Tapering the screening term. ", &
     340             :                           usage="RC_TAPER {real} ", unit_str="angstrom", &
     341        8546 :                           default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     342        8546 :       CALL section_add_keyword(section, keyword)
     343        8546 :       CALL keyword_release(keyword)
     344             : 
     345             :       CALL keyword_create(keyword, __LOCATION__, name="RC_RANGE", &
     346             :                           description="Range of cutoff switch function (tapering): 0.5*(1-TANH((r-r0)/RC_RANGE)), "// &
     347             :                           "where r0=2*RC_TAPER-20*RC_RANGE.", &
     348        8546 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     349        8546 :       CALL section_add_keyword(section, keyword)
     350        8546 :       CALL keyword_release(keyword)
     351             : 
     352        8546 :    END SUBROUTINE create_screening_section
     353             : 
     354             : ! **************************************************************************************************
     355             : !> \brief Create the print se section
     356             : !> \param section the section to create
     357             : !> \author teo
     358             : ! **************************************************************************************************
     359        8546 :    SUBROUTINE create_se_print_section(section)
     360             :       TYPE(section_type), POINTER                        :: section
     361             : 
     362             :       TYPE(section_type), POINTER                        :: print_key
     363             : 
     364        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     365             :       CALL section_create(section, __LOCATION__, name="print", &
     366             :                           description="Section of possible print options in SE code.", &
     367        8546 :                           n_keywords=0, n_subsections=1, repeats=.FALSE.)
     368             : 
     369        8546 :       NULLIFY (print_key)
     370             :       CALL cp_print_key_section_create(print_key, __LOCATION__, "NEIGHBOR_LISTS", &
     371             :                                        description="Activates the printing of the neighbor lists used"// &
     372             :                                        " for the periodic SE calculations.", &
     373        8546 :                                        print_level=high_print_level, filename="", unit_str="angstrom")
     374        8546 :       CALL section_add_subsection(section, print_key)
     375        8546 :       CALL section_release(print_key)
     376             : 
     377             :       CALL cp_print_key_section_create(print_key, __LOCATION__, "SUBCELL", &
     378             :                                        description="Activates the printing of the subcells used for the "// &
     379             :                                        "generation of neighbor lists for periodic SE.", &
     380        8546 :                                        print_level=high_print_level, filename="__STD_OUT__")
     381        8546 :       CALL section_add_subsection(section, print_key)
     382        8546 :       CALL section_release(print_key)
     383             : 
     384             :       CALL cp_print_key_section_create(print_key, __LOCATION__, "EWALD_INFO", &
     385             :                                        description="Activates the printing of the information for "// &
     386             :                                        "Ewald multipole summation in periodic SE.", &
     387        8546 :                                        print_level=high_print_level, filename="__STD_OUT__")
     388        8546 :       CALL section_add_subsection(section, print_key)
     389        8546 :       CALL section_release(print_key)
     390             : 
     391        8546 :    END SUBROUTINE create_se_print_section
     392             : 
     393             : ! **************************************************************************************************
     394             : !> \brief creates the input section for use with the GA part of the code
     395             : !> \param section the section to create
     396             : !> \author Teodoro Laino [tlaino] - University of Zurich - 05.2008
     397             : ! **************************************************************************************************
     398        8546 :    SUBROUTINE create_se_ga_section(section)
     399             :       TYPE(section_type), POINTER                        :: section
     400             : 
     401             :       TYPE(keyword_type), POINTER                        :: keyword
     402             : 
     403        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     404             :       CALL section_create(section, __LOCATION__, name="GA", &
     405             :                           description="Sets up memory parameters for the storage of the integrals", &
     406        8546 :                           n_keywords=1, n_subsections=0, repeats=.FALSE.)
     407        8546 :       NULLIFY (keyword)
     408             : 
     409             :       CALL keyword_create( &
     410             :          keyword, __LOCATION__, &
     411             :          name="NCELLS", &
     412             :          description="Defines the number of linked cells for the neighbor list. "// &
     413             :          "Default value is number of processors", &
     414             :          usage="NCELLS 10", &
     415        8546 :          default_i_val=0)
     416        8546 :       CALL section_add_keyword(section, keyword)
     417        8546 :       CALL keyword_release(keyword)
     418        8546 :    END SUBROUTINE create_se_ga_section
     419             : 
     420             : ! **************************************************************************************************
     421             : !> \brief creates the input section for the se-memory part integral storage
     422             : !> \param section the section to create
     423             : !> \author Teodoro Laino [tlaino] - University of Zurich - 05.2008
     424             : ! **************************************************************************************************
     425        8546 :    SUBROUTINE create_se_memory_section(section)
     426             :       TYPE(section_type), POINTER                        :: section
     427             : 
     428             :       TYPE(keyword_type), POINTER                        :: keyword
     429             : 
     430        8546 :       CPASSERT(.NOT. ASSOCIATED(section))
     431             :       CALL section_create(section, __LOCATION__, name="MEMORY", &
     432             :                           description="Sets up memory parameters for the storage of the integrals", &
     433        8546 :                           n_keywords=1, n_subsections=0, repeats=.FALSE.)
     434        8546 :       NULLIFY (keyword)
     435             :       CALL keyword_create( &
     436             :          keyword, __LOCATION__, &
     437             :          name="EPS_STORAGE", &
     438             :          description="Storage threshold for compression is EPS_STORAGE", &
     439             :          usage="EPS_STORAGE 1.0E-10", &
     440        8546 :          default_r_val=1.0E-10_dp)
     441        8546 :       CALL section_add_keyword(section, keyword)
     442        8546 :       CALL keyword_release(keyword)
     443             : 
     444             :       CALL keyword_create( &
     445             :          keyword, __LOCATION__, &
     446             :          name="MAX_MEMORY", &
     447             :          description="Defines the maximum amount of memory [MB] used to store precomputed "// &
     448             :          "(possibly compressed) two-electron two-center integrals", &
     449             :          usage="MAX_MEMORY 256", &
     450        8546 :          default_i_val=50)
     451        8546 :       CALL section_add_keyword(section, keyword)
     452        8546 :       CALL keyword_release(keyword)
     453             : 
     454             :       CALL keyword_create(keyword, __LOCATION__, name="COMPRESS", &
     455             :                           description="Enables the compression of the integrals in memory.", &
     456             :                           usage="COMPRESS <LOGICAL>", &
     457        8546 :                           default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
     458        8546 :       CALL section_add_keyword(section, keyword)
     459        8546 :       CALL keyword_release(keyword)
     460             : 
     461        8546 :    END SUBROUTINE create_se_memory_section
     462             : 
     463             : END MODULE input_cp2k_se

Generated by: LCOV version 1.15