LCOV - code coverage report
Current view: top level - src - input_cp2k_se.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 100.0 % 155 155
Test Date: 2025-12-04 06:27:48 Functions: 100.0 % 8 8

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2025 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         9300 :    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         9300 :       NULLIFY (keyword)
      57         9300 :       CPASSERT(.NOT. ASSOCIATED(section))
      58              :       CALL section_create(section, __LOCATION__, name="SE", &
      59              :                           description="Parameters needed to set up the Semi-empirical methods", &
      60         9300 :                           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         9300 :                           usage="ORTHOGONAL_BASIS", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
      66         9300 :       CALL section_add_keyword(section, keyword)
      67         9300 :       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         9300 :                           usage="STO_NG", default_i_val=6)
      72         9300 :       CALL section_add_keyword(section, keyword)
      73         9300 :       CALL keyword_release(keyword)
      74              : 
      75              :       CALL keyword_create(keyword, __LOCATION__, name="ANALYTICAL_GRADIENTS", &
      76              :                           description="Nuclear Gradients are computed analytically or numerically", &
      77         9300 :                           usage="ANALYTICAL_GRADIENTS", default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
      78         9300 :       CALL section_add_keyword(section, keyword)
      79         9300 :       CALL keyword_release(keyword)
      80              : 
      81              :       CALL keyword_create(keyword, __LOCATION__, name="DELTA", &
      82              :                           description="Step size in finite difference force calculation", &
      83         9300 :                           usage="DELTA {real} ", default_r_val=1.e-6_dp)
      84         9300 :       CALL section_add_keyword(section, keyword)
      85         9300 :       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         9300 :                           default_i_val=do_se_IS_kdso)
      98         9300 :       CALL section_add_keyword(section, keyword)
      99         9300 :       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         9300 :                           default_i_val=do_se_lr_none)
     116         9300 :       CALL section_add_keyword(section, keyword)
     117         9300 :       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         9300 :                           "Coulomb integrals.", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
     123         9300 :       CALL section_add_keyword(section, keyword)
     124         9300 :       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         9300 :                           usage="DISPERSION", default_l_val=.FALSE.)
     130         9300 :       CALL section_add_keyword(section, keyword)
     131         9300 :       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         9300 :                           n_var=1, type_of_var=char_t, default_c_val="")
     137         9300 :       CALL section_add_keyword(section, keyword)
     138         9300 :       CALL keyword_release(keyword)
     139              : 
     140              :       CALL keyword_create(keyword, __LOCATION__, name="DISPERSION_RADIUS", &
     141              :                           description="Define radius of dispersion interaction", &
     142         9300 :                           usage="DISPERSION_RADIUS", default_r_val=15._dp)
     143         9300 :       CALL section_add_keyword(section, keyword)
     144         9300 :       CALL keyword_release(keyword)
     145              : 
     146              :       CALL keyword_create(keyword, __LOCATION__, name="COORDINATION_CUTOFF", &
     147              :                           description="Define cutoff for coordination number calculation", &
     148         9300 :                           usage="COORDINATION_CUTOFF", default_r_val=1.e-6_dp)
     149         9300 :       CALL section_add_keyword(section, keyword)
     150         9300 :       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         9300 :                           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         9300 :       CALL section_add_keyword(section, keyword)
     156         9300 :       CALL keyword_release(keyword)
     157              : 
     158         9300 :       NULLIFY (subsection)
     159         9300 :       CALL create_coulomb_section(subsection)
     160         9300 :       CALL section_add_subsection(section, subsection)
     161         9300 :       CALL section_release(subsection)
     162              : 
     163         9300 :       CALL create_exchange_section(subsection)
     164         9300 :       CALL section_add_subsection(section, subsection)
     165         9300 :       CALL section_release(subsection)
     166              : 
     167         9300 :       CALL create_screening_section(subsection)
     168         9300 :       CALL section_add_subsection(section, subsection)
     169         9300 :       CALL section_release(subsection)
     170              : 
     171         9300 :       CALL create_lr_corr_section(subsection)
     172         9300 :       CALL section_add_subsection(section, subsection)
     173         9300 :       CALL section_release(subsection)
     174              : 
     175         9300 :       CALL create_neighbor_lists_section(subsection)
     176         9300 :       CALL section_add_subsection(section, subsection)
     177         9300 :       CALL section_release(subsection)
     178              : 
     179         9300 :       CALL create_se_memory_section(subsection)
     180         9300 :       CALL section_add_subsection(section, subsection)
     181         9300 :       CALL section_release(subsection)
     182              : 
     183         9300 :       CALL create_se_print_section(subsection)
     184         9300 :       CALL section_add_subsection(section, subsection)
     185         9300 :       CALL section_release(subsection)
     186              : 
     187         9300 :       CALL create_se_ga_section(subsection)
     188         9300 :       CALL section_add_subsection(section, subsection)
     189         9300 :       CALL section_release(subsection)
     190              : 
     191         9300 :    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         9300 :    SUBROUTINE create_lr_corr_section(section)
     200              :       TYPE(section_type), POINTER                        :: section
     201              : 
     202              :       TYPE(keyword_type), POINTER                        :: keyword
     203              : 
     204         9300 :       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         9300 :                           "calculations.", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     208         9300 :       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         9300 :                           default_r_val=cp_unit_to_cp2k(value=6.0_dp, unit_str="angstrom"))
     214         9300 :       CALL section_add_keyword(section, keyword)
     215         9300 :       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         9300 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     221         9300 :       CALL section_add_keyword(section, keyword)
     222         9300 :       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         9300 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     228         9300 :       CALL section_add_keyword(section, keyword)
     229         9300 :       CALL keyword_release(keyword)
     230              : 
     231         9300 :    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         9300 :    SUBROUTINE create_coulomb_section(section)
     240              :       TYPE(section_type), POINTER                        :: section
     241              : 
     242              :       TYPE(keyword_type), POINTER                        :: keyword
     243              : 
     244         9300 :       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         9300 :                           "calculations.", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     248         9300 :       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         9300 :          default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     257         9300 :       CALL section_add_keyword(section, keyword)
     258         9300 :       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         9300 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     264         9300 :       CALL section_add_keyword(section, keyword)
     265         9300 :       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         9300 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     271         9300 :       CALL section_add_keyword(section, keyword)
     272         9300 :       CALL keyword_release(keyword)
     273              : 
     274         9300 :    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         9300 :    SUBROUTINE create_exchange_section(section)
     283              :       TYPE(section_type), POINTER                        :: section
     284              : 
     285              :       TYPE(keyword_type), POINTER                        :: keyword
     286              : 
     287         9300 :       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         9300 :                           repeats=.FALSE.)
     292         9300 :       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         9300 :                           default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     302         9300 :       CALL section_add_keyword(section, keyword)
     303         9300 :       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         9300 :                           usage="RC_TAPER {real} ", unit_str="angstrom", type_of_var=real_t)
     309         9300 :       CALL section_add_keyword(section, keyword)
     310         9300 :       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         9300 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     316         9300 :       CALL section_add_keyword(section, keyword)
     317         9300 :       CALL keyword_release(keyword)
     318              : 
     319         9300 :    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         9300 :    SUBROUTINE create_screening_section(section)
     328              :       TYPE(section_type), POINTER                        :: section
     329              : 
     330              :       TYPE(keyword_type), POINTER                        :: keyword
     331              : 
     332         9300 :       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         9300 :                           "KDSO-D integral scheme,", n_keywords=0, n_subsections=1, repeats=.FALSE.)
     336         9300 :       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         9300 :                           default_r_val=cp_unit_to_cp2k(value=12.0_dp, unit_str="angstrom"))
     342         9300 :       CALL section_add_keyword(section, keyword)
     343         9300 :       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         9300 :                           usage="RC_RANGE {real} ", unit_str="angstrom", default_r_val=0.0_dp)
     349         9300 :       CALL section_add_keyword(section, keyword)
     350         9300 :       CALL keyword_release(keyword)
     351              : 
     352         9300 :    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         9300 :    SUBROUTINE create_se_print_section(section)
     360              :       TYPE(section_type), POINTER                        :: section
     361              : 
     362              :       TYPE(section_type), POINTER                        :: print_key
     363              : 
     364         9300 :       CPASSERT(.NOT. ASSOCIATED(section))
     365              :       CALL section_create(section, __LOCATION__, name="print", &
     366              :                           description="Section of possible print options in SE code.", &
     367         9300 :                           n_keywords=0, n_subsections=1, repeats=.FALSE.)
     368              : 
     369         9300 :       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         9300 :                                        print_level=high_print_level, filename="", unit_str="angstrom")
     374         9300 :       CALL section_add_subsection(section, print_key)
     375         9300 :       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         9300 :                                        print_level=high_print_level, filename="__STD_OUT__")
     381         9300 :       CALL section_add_subsection(section, print_key)
     382         9300 :       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         9300 :                                        print_level=high_print_level, filename="__STD_OUT__")
     388         9300 :       CALL section_add_subsection(section, print_key)
     389         9300 :       CALL section_release(print_key)
     390              : 
     391         9300 :    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         9300 :    SUBROUTINE create_se_ga_section(section)
     399              :       TYPE(section_type), POINTER                        :: section
     400              : 
     401              :       TYPE(keyword_type), POINTER                        :: keyword
     402              : 
     403         9300 :       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         9300 :                           n_keywords=1, n_subsections=0, repeats=.FALSE.)
     407         9300 :       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         9300 :          default_i_val=0)
     416         9300 :       CALL section_add_keyword(section, keyword)
     417         9300 :       CALL keyword_release(keyword)
     418         9300 :    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         9300 :    SUBROUTINE create_se_memory_section(section)
     426              :       TYPE(section_type), POINTER                        :: section
     427              : 
     428              :       TYPE(keyword_type), POINTER                        :: keyword
     429              : 
     430         9300 :       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         9300 :                           n_keywords=1, n_subsections=0, repeats=.FALSE.)
     434         9300 :       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         9300 :          default_r_val=1.0E-10_dp)
     441         9300 :       CALL section_add_keyword(section, keyword)
     442         9300 :       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         9300 :          default_i_val=50)
     451         9300 :       CALL section_add_keyword(section, keyword)
     452         9300 :       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         9300 :                           default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
     458         9300 :       CALL section_add_keyword(section, keyword)
     459         9300 :       CALL keyword_release(keyword)
     460              : 
     461         9300 :    END SUBROUTINE create_se_memory_section
     462              : 
     463              : END MODULE input_cp2k_se
        

Generated by: LCOV version 2.0-1