LCOV - code coverage report
Current view: top level - src - mp2_setup.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:2c0d679) Lines: 98.6 % 283 279
Test Date: 2026-09-25 00:58:37 Functions: 100.0 % 2 2

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2026 CP2K developers group <https://cp2k.org>                                   !
       4              : !                                                                                                  !
       5              : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6              : !--------------------------------------------------------------------------------------------------!
       7              : 
       8              : ! **************************************************************************************************
       9              : !> \brief Types needed for MP2 calculations
      10              : !> \par History
      11              : !>       2011.05 created [Mauro Del Ben]
      12              : !> \author MDB
      13              : ! **************************************************************************************************
      14              : MODULE mp2_setup
      15              :    USE cp_eri_mme_interface,            ONLY: cp_eri_mme_init_read_input
      16              :    USE cp_log_handling,                 ONLY: cp_get_default_logger,&
      17              :                                               cp_logger_type
      18              :    USE cp_output_handling,              ONLY: cp_p_file,&
      19              :                                               cp_print_key_finished_output,&
      20              :                                               cp_print_key_should_output,&
      21              :                                               cp_print_key_unit_nr,&
      22              :                                               debug_print_level
      23              :    USE cp_parser_methods,               ONLY: read_float_object
      24              :    USE input_constants,                 ONLY: &
      25              :         do_eri_mme, do_potential_short, evGW, evGW0, mp2_method_direct, mp2_method_gpw, &
      26              :         mp2_method_none, mp2_ri_optimize_basis, ri_mp2_laplace, ri_mp2_method_gpw, &
      27              :         ri_rpa_method_gpw
      28              :    USE input_section_types,             ONLY: section_vals_get_subs_vals,&
      29              :                                               section_vals_type,&
      30              :                                               section_vals_val_get
      31              :    USE kinds,                           ONLY: default_string_length,&
      32              :                                               dp,&
      33              :                                               max_line_length
      34              :    USE machine,                         ONLY: m_flush
      35              :    USE mathlib,                         ONLY: erfc_cutoff
      36              :    USE mp2_types,                       ONLY: mp2_method_direct,&
      37              :                                               mp2_method_gpw,&
      38              :                                               mp2_method_none,&
      39              :                                               mp2_ri_optimize_basis,&
      40              :                                               mp2_type,&
      41              :                                               ri_mp2_laplace,&
      42              :                                               ri_mp2_method_gpw,&
      43              :                                               ri_rpa_method_gpw
      44              : #include "./base/base_uses.f90"
      45              : 
      46              :    IMPLICIT NONE
      47              : 
      48              :    PRIVATE
      49              : 
      50              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'mp2_setup'
      51              : 
      52              :    PUBLIC :: read_mp2_section
      53              : 
      54              : CONTAINS
      55              : 
      56              : ! **************************************************************************************************
      57              : !> \brief ...
      58              : !> \param input ...
      59              : !> \param mp2_env ...
      60              : ! **************************************************************************************************
      61          500 :    SUBROUTINE read_mp2_section(input, mp2_env)
      62              :       TYPE(section_vals_type), POINTER                   :: input
      63              :       TYPE(mp2_type), INTENT(INOUT)                      :: mp2_env
      64              : 
      65              :       CHARACTER(len=*), PARAMETER                        :: routineN = 'read_mp2_section'
      66              : 
      67              :       CHARACTER(LEN=default_string_length), &
      68          500 :          DIMENSION(:), POINTER                           :: string_pointer
      69              :       CHARACTER(LEN=max_line_length)                     :: error_message
      70              :       INTEGER                                            :: gw_sc, handle, i, i_special_kp, ival, &
      71              :                                                             print_level_NTO_analysis, unit_nr
      72          500 :       INTEGER, DIMENSION(:), POINTER                     :: tmplist
      73              :       LOGICAL                                            :: do_mp2, do_opt_ri_basis, do_ri_mp2, &
      74              :                                                             do_ri_sos_mp2, do_rpa, explicit
      75          500 :       REAL(KIND=dp), DIMENSION(:), POINTER               :: r_vals
      76              :       TYPE(cp_logger_type), POINTER                      :: logger
      77              :       TYPE(section_vals_type), POINTER                   :: bse_section, cphf_section, &
      78              :                                                             eri_mme_section, gw_section, &
      79              :                                                             low_scaling_section, mp2_section
      80              : 
      81          500 :       CALL timeset(routineN, handle)
      82          500 :       logger => cp_get_default_logger()
      83              : 
      84          500 :       mp2_section => section_vals_get_subs_vals(input, "DFT%XC%WF_CORRELATION")
      85              : 
      86          500 :       mp2_env%method = mp2_method_none
      87              : 
      88              :       ! should come from input
      89          500 :       CALL section_vals_val_get(mp2_section, "MEMORY", r_val=mp2_env%mp2_memory)
      90          500 :       CALL section_vals_val_get(mp2_section, "SCALE_S", r_val=mp2_env%scale_S)
      91          500 :       CALL section_vals_val_get(mp2_section, "SCALE_T", r_val=mp2_env%scale_T)
      92          500 :       CALL section_vals_val_get(mp2_section, "GROUP_SIZE", i_val=mp2_env%mp2_num_proc)
      93          500 :       CALL section_vals_val_get(mp2_section, "E_GAP", r_val=mp2_env%e_gap)
      94          500 :       CALL section_vals_val_get(mp2_section, "E_RANGE", r_val=mp2_env%e_range)
      95              : 
      96          500 :       CALL section_vals_val_get(mp2_section, "MP2%_SECTION_PARAMETERS_", l_val=do_mp2)
      97          500 :       CALL section_vals_val_get(mp2_section, "MP2%BIG_SEND", l_val=mp2_env%direct_canonical%big_send)
      98          500 :       IF (do_mp2) THEN
      99           32 :          CALL check_method(mp2_env%method)
     100           32 :          CALL section_vals_val_get(mp2_section, "MP2%METHOD", i_val=mp2_env%method)
     101              :       END IF
     102              : 
     103          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%_SECTION_PARAMETERS_", l_val=do_rpa)
     104              : 
     105              :       !CALL section_vals_val_get(mp2_section, "RI_RPA%SIGMA_FUNCTIONAL",l_val=mp2_env%ri_rpa%do_sigma)
     106          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%SIGMA_FUNCTIONAL", i_val=mp2_env%ri_rpa%sigma_param)
     107              : 
     108          500 :       IF (do_rpa) THEN
     109          238 :          CALL check_method(mp2_env%method)
     110          238 :          mp2_env%method = ri_rpa_method_gpw
     111              :       END IF
     112          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%RPA_NUM_QUAD_POINTS", i_val=mp2_env%ri_rpa%rpa_num_quad_points)
     113          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%NUM_INTEG_GROUPS", i_val=mp2_env%ri_rpa%rpa_num_integ_groups)
     114          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%MM_STYLE", i_val=mp2_env%ri_rpa%mm_style)
     115          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%MINIMAX_QUADRATURE", l_val=mp2_env%ri_rpa%minimax_quad)
     116          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%ADMM", l_val=mp2_env%ri_rpa%do_admm)
     117          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%SCALE_RPA", r_val=mp2_env%ri_rpa%scale_rpa)
     118          500 :       mp2_env%ri_rpa%reuse_hfx = .FALSE.
     119              : 
     120              :       CALL section_vals_val_get(mp2_section, "RI_RPA%EXCHANGE_CORRECTION%_SECTION_PARAMETERS_", &
     121          500 :                                 i_val=mp2_env%ri_rpa%exchange_correction)
     122              :       CALL section_vals_val_get(mp2_section, "RI_RPA%EXCHANGE_CORRECTION%BLOCK_SIZE", &
     123          500 :                                 i_val=mp2_env%ri_rpa%exchange_block_size)
     124              :       CALL section_vals_val_get(mp2_section, "RI_RPA%EXCHANGE_CORRECTION%USE_HFX_IMPLEMENTATION", &
     125          500 :                                 l_val=mp2_env%ri_rpa%use_hfx_implementation)
     126              : 
     127          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%RSE", l_val=mp2_env%ri_rpa%do_rse)
     128              : 
     129          500 :       CALL section_vals_val_get(mp2_section, "RI_RPA%PRINT_DGEMM_INFO", l_val=mp2_env%ri_rpa%print_dgemm_info)
     130              : 
     131          500 :       NULLIFY (gw_section)
     132          500 :       gw_section => section_vals_get_subs_vals(mp2_section, "RI_RPA%GW")
     133              :       CALL section_vals_val_get(gw_section, "_SECTION_PARAMETERS_", &
     134          500 :                                 l_val=mp2_env%ri_rpa%do_ri_g0w0)
     135              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%SELF_CONSISTENCY", &
     136          500 :                                 i_val=gw_sc)
     137              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%CORR_MOS_OCC", &
     138          500 :                                 i_val=mp2_env%ri_g0w0%corr_mos_occ)
     139              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%CORR_MOS_VIRT", &
     140          500 :                                 i_val=mp2_env%ri_g0w0%corr_mos_virt)
     141              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%NUMB_POLES", &
     142          500 :                                 i_val=mp2_env%ri_g0w0%num_poles)
     143              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%NPARAM_PADE", &
     144          500 :                                 i_val=mp2_env%ri_g0w0%nparam_pade)
     145              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%ANALYTIC_CONTINUATION", &
     146          500 :                                 i_val=mp2_env%ri_g0w0%analytic_continuation)
     147              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%OMEGA_MAX_FIT", &
     148          500 :                                 r_val=mp2_env%ri_g0w0%omega_max_fit)
     149              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%CROSSING_SEARCH", &
     150          500 :                                 i_val=mp2_env%ri_g0w0%crossing_search)
     151              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%FERMI_LEVEL_OFFSET", &
     152          500 :                                 r_val=mp2_env%ri_g0w0%fermi_level_offset)
     153              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%HEDIN_SHIFT", &
     154          500 :                                 l_val=mp2_env%ri_g0w0%do_hedin_shift)
     155              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%EV_GW_ITER", &
     156          500 :                                 i_val=mp2_env%ri_g0w0%iter_evGW)
     157          500 :       IF (gw_sc == evGW) mp2_env%ri_g0w0%iter_evGW = 10
     158              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%SC_GW0_ITER", &
     159          500 :                                 i_val=mp2_env%ri_g0w0%iter_sc_GW0)
     160          500 :       IF (gw_sc == evGW0) mp2_env%ri_g0w0%iter_sc_GW0 = 10
     161              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%EPS_ITER", &
     162          500 :                                 r_val=mp2_env%ri_g0w0%eps_iter)
     163              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT_EXX", &
     164          500 :                                 i_val=mp2_env%ri_g0w0%print_exx)
     165              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT_SELF_ENERGY", &
     166          500 :                                 l_val=mp2_env%ri_g0w0%print_self_energy)
     167              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%RI_SIGMA_X", &
     168          500 :                                 l_val=mp2_env%ri_g0w0%do_ri_Sigma_x)
     169              : 
     170          500 :       NULLIFY (r_vals)
     171              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%IC_CORR_LIST", &
     172          500 :                                 r_vals=r_vals)
     173         1500 :       ALLOCATE (mp2_env%ri_g0w0%ic_corr_list(1)%array(SIZE(r_vals)))
     174         1000 :       mp2_env%ri_g0w0%ic_corr_list(1)%array(:) = r_vals(:)
     175          500 :       NULLIFY (r_vals)
     176              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%IC_CORR_LIST_BETA", &
     177          500 :                                 r_vals=r_vals)
     178         1500 :       ALLOCATE (mp2_env%ri_g0w0%ic_corr_list(2)%array(SIZE(r_vals)))
     179         1000 :       mp2_env%ri_g0w0%ic_corr_list(2)%array(:) = r_vals(:)
     180              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%GAMMA_ONLY_SIGMA", &
     181          500 :                                 l_val=mp2_env%ri_g0w0%do_gamma_only_sigma)
     182              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%UPDATE_XC_ENERGY", &
     183          500 :                                 l_val=mp2_env%ri_g0w0%update_xc_energy)
     184              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%REGULARIZATION_MINIMAX", &
     185          500 :                                 r_val=mp2_env%ri_g0w0%regularization_minimax)
     186              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%SOC", &
     187          500 :                                 i_val=mp2_env%ri_g0w0%soc_type)
     188              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%SOC_ENERGY_WINDOW", &
     189          500 :                                 r_val=mp2_env%ri_g0w0%soc_energy_window)
     190              : 
     191          500 :       NULLIFY (bse_section)
     192          500 :       bse_section => section_vals_get_subs_vals(mp2_section, "RI_RPA%GW%BSE")
     193              :       CALL section_vals_val_get(bse_section, "_SECTION_PARAMETERS_", &
     194          500 :                                 l_val=mp2_env%bse%do_bse)
     195              :       CALL section_vals_val_get(bse_section, "SPIN_CONFIG", &
     196          500 :                                 i_val=mp2_env%bse%bse_spin_config)
     197              :       CALL section_vals_val_get(bse_section, "ENERGY_CUTOFF_OCC", &
     198          500 :                                 r_val=mp2_env%bse%bse_cutoff_occ)
     199              :       CALL section_vals_val_get(bse_section, "ENERGY_CUTOFF_EMPTY", &
     200          500 :                                 r_val=mp2_env%bse%bse_cutoff_empty)
     201              :       CALL section_vals_val_get(bse_section, "NUM_PRINT_EXC", &
     202          500 :                                 i_val=mp2_env%bse%num_print_exc)
     203              :       CALL section_vals_val_get(bse_section, "NUM_PRINT_EXC_DESCR", &
     204          500 :                                 i_val=mp2_env%bse%num_print_exc_descr)
     205              :       CALL section_vals_val_get(bse_section, "PRINT_DIRECTIONAL_EXC_DESCR", &
     206          500 :                                 l_val=mp2_env%bse%print_directional_exc_descr)
     207              :       CALL section_vals_val_get(bse_section, "PRINT_DIRECTIONAL_CROSSCORRELATION", &
     208          500 :                                 l_val=mp2_env%bse%print_directional_crosscorrelation, explicit=explicit)
     209          500 :       IF (explicit .AND. mp2_env%bse%print_directional_crosscorrelation .AND. &
     210              :           .NOT. mp2_env%bse%print_directional_exc_descr) THEN
     211              :          CALL cp_warn(__LOCATION__, &
     212            0 :                       "PRINT_DIRECTIONAL_CROSSCORRELATION has no effect without PRINT_DIRECTIONAL_EXC_DESCR.")
     213              :       END IF
     214              :       CALL section_vals_val_get(bse_section, "EPS_X", &
     215          500 :                                 r_val=mp2_env%bse%eps_x)
     216              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%NUM_EXC_EN", &
     217          500 :                                 i_val=mp2_env%bse%num_exc_en)
     218              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%NUM_BUFFER_STATES", &
     219          500 :                                 i_val=mp2_env%bse%num_buffer_states)
     220              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%BLOCK_SIZE", &
     221          500 :                                 i_val=mp2_env%bse%block_size)
     222              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%NUM_GUESS_TRANSITIONS", &
     223          500 :                                 i_val=mp2_env%bse%num_guess_transitions)
     224              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%MAX_SUBSPACE_FACTOR", &
     225          500 :                                 i_val=mp2_env%bse%max_subspace_factor)
     226              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%MATVEC_BLOCK_COLUMNS", &
     227          500 :                                 i_val=mp2_env%bse%matvec_block_columns)
     228              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%MEMORY_CHECK", &
     229          500 :                                 i_val=mp2_env%bse%memory_check)
     230              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%MEMORY_BUDGET_GB", &
     231          500 :                                 r_val=mp2_env%bse%memory_budget_gb)
     232              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%MAX_ITER", &
     233          500 :                                 i_val=mp2_env%bse%max_iter)
     234              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%CONVERGENCE_CRITERION", &
     235          500 :                                 i_val=mp2_env%bse%convergence_criterion)
     236              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%EPS_RES", &
     237          500 :                                 r_val=mp2_env%bse%eps_res)
     238              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%EPS_ENERGY", &
     239          500 :                                 r_val=mp2_env%bse%eps_energy)
     240              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%PRECONDITIONER", &
     241          500 :                                 i_val=mp2_env%bse%preconditioner)
     242              :       CALL section_vals_val_get(bse_section, "BSE_ITERAT%ABBA_SOLVER", &
     243          500 :                                 i_val=mp2_env%bse%abba_solver)
     244              :       CALL section_vals_val_get(bse_section, "BSE_DIAG_METHOD", &
     245          500 :                                 i_val=mp2_env%bse%bse_diag_method)
     246              :       CALL section_vals_val_get(bse_section, "TDA", &
     247          500 :                                 i_val=mp2_env%bse%flag_tda)
     248              :       CALL section_vals_val_get(bse_section, "USE_KS_ENERGIES", &
     249          500 :                                 l_val=mp2_env%bse%use_ks_energies)
     250              :       CALL section_vals_val_get(bse_section, "SCREENING_IN_W%_SECTION_PARAMETERS_", &
     251          500 :                                 i_val=mp2_env%bse%screening_method)
     252              :       CALL section_vals_val_get(bse_section, "SCREENING_IN_W%ALPHA", &
     253          500 :                                 r_val=mp2_env%bse%screening_factor)
     254              :       CALL section_vals_val_get(bse_section, "BSE_DEBUG_PRINT", &
     255          500 :                                 l_val=mp2_env%bse%bse_debug_print)
     256              :       CALL section_vals_val_get(bse_section, "BSE_SPECTRUM%_SECTION_PARAMETERS_", &
     257          500 :                                 l_val=mp2_env%bse%bse_print_spectrum)
     258              :       CALL section_vals_val_get(bse_section, "BSE_SPECTRUM%FREQUENCY_STEP_SIZE", &
     259          500 :                                 r_val=mp2_env%bse%bse_spectrum_freq_step_size)
     260              :       CALL section_vals_val_get(bse_section, "BSE_SPECTRUM%FREQUENCY_STARTING_POINT", &
     261          500 :                                 r_val=mp2_env%bse%bse_spectrum_freq_start)
     262              :       CALL section_vals_val_get(bse_section, "BSE_SPECTRUM%FREQUENCY_END_POINT", &
     263          500 :                                 r_val=mp2_env%bse%bse_spectrum_freq_end)
     264              :       CALL section_vals_val_get(bse_section, "BSE_SPECTRUM%ETA_LIST", &
     265          500 :                                 r_vals=mp2_env%bse%bse_eta_spectrum_list)
     266              :       CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%_SECTION_PARAMETERS_", &
     267          500 :                                 i_val=print_level_NTO_analysis)
     268              :       ! All other print levels besides "off" should trigger the analysis
     269              :       ! cf. input/cp_output_handling.F:cp_print_key_section_create
     270          500 :       IF (print_level_NTO_analysis /= debug_print_level + 1) THEN
     271            4 :          mp2_env%bse%do_nto_analysis = .TRUE.
     272              :       ELSE
     273          496 :          mp2_env%bse%do_nto_analysis = .FALSE.
     274              :       END IF
     275              :       CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%EPS_NTO_EIGVAL", &
     276          500 :                                 r_val=mp2_env%bse%eps_nto_eigval)
     277              :       CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%EPS_OSC_STR", &
     278          500 :                                 r_val=mp2_env%bse%eps_nto_osc_str)
     279              :       CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%NUM_PRINT_EXC_NTOS", &
     280          500 :                                 i_val=mp2_env%bse%num_print_exc_ntos)
     281              :       CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%STATE_LIST", &
     282          500 :                                 EXPLICIT=mp2_env%bse%explicit_nto_list)
     283          500 :       IF (mp2_env%bse%explicit_nto_list) THEN
     284              :          CALL section_vals_val_get(bse_section, "NTO_ANALYSIS%STATE_LIST", &
     285            0 :                                    i_vals=mp2_env%bse%bse_nto_state_list)
     286              :       END IF
     287              : 
     288              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%IMAGE_CHARGE_MODEL", &
     289          500 :                                 l_val=mp2_env%ri_g0w0%do_ic_model)
     290              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%IC%PRINT_IC_LIST", &
     291          500 :                                 l_val=mp2_env%ri_g0w0%print_ic_values)
     292              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%IC%EPS_DIST", &
     293          500 :                                 r_val=mp2_env%ri_g0w0%eps_dist)
     294              : 
     295              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION", &
     296          500 :                                 l_val=mp2_env%ri_g0w0%do_periodic)
     297              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%KPOINTS", &
     298          500 :                                 i_vals=mp2_env%ri_g0w0%kp_grid)
     299              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%NUM_KP_GRIDS", &
     300          500 :                                 i_val=mp2_env%ri_g0w0%num_kp_grids)
     301              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%EPS_KPOINT", &
     302          500 :                                 r_val=mp2_env%ri_g0w0%eps_kpoint)
     303              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%MO_COEFF_GAMMA", &
     304          500 :                                 l_val=mp2_env%ri_g0w0%do_mo_coeff_gamma)
     305              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%AVERAGE_DEGENERATE_LEVELS", &
     306          500 :                                 l_val=mp2_env%ri_g0w0%do_average_deg_levels)
     307              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%EPS_EIGENVAL", &
     308          500 :                                 r_val=mp2_env%ri_g0w0%eps_eigenval)
     309              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%EXTRAPOLATE_KPOINTS", &
     310          500 :                                 l_val=mp2_env%ri_g0w0%do_extra_kpoints)
     311              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%DO_AUX_BAS_GW", &
     312          500 :                                 l_val=mp2_env%ri_g0w0%do_aux_bas_gw)
     313              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%FRACTION_AUX_MOS", &
     314          500 :                                 r_val=mp2_env%ri_g0w0%frac_aux_mos)
     315              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PERIODIC_CORRECTION%NUM_OMEGA_POINTS", &
     316          500 :                                 i_val=mp2_env%ri_g0w0%num_omega_points)
     317              : 
     318              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%KPOINT_SET%NPOINTS", &
     319          500 :                                 i_val=mp2_env%ri_g0w0%n_kp_in_kp_line)
     320              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%KPOINT_SET%SPECIAL_POINT", &
     321          500 :                                 n_rep_val=mp2_env%ri_g0w0%n_special_kp)
     322         1014 :       ALLOCATE (mp2_env%ri_g0w0%xkp_special_kp(3, mp2_env%ri_g0w0%n_special_kp))
     323          528 :       DO i_special_kp = 1, mp2_env%ri_g0w0%n_special_kp
     324              :          CALL section_vals_val_get(mp2_section, "RI_RPA%GW%KPOINT_SET%SPECIAL_POINT", &
     325           28 :                                    i_rep_val=i_special_kp, c_vals=string_pointer)
     326           28 :          CPASSERT(SIZE(string_pointer(:), 1) == 3)
     327          612 :          DO i = 1, 3
     328              :             CALL read_float_object(string_pointer(i), &
     329              :                                    mp2_env%ri_g0w0%xkp_special_kp(i, i_special_kp), &
     330           84 :                                    error_message)
     331          112 :             IF (LEN_TRIM(error_message) > 0) CPABORT(TRIM(error_message))
     332              :          END DO
     333              :       END DO
     334              : 
     335              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%KPOINTS_SELF_ENERGY", &
     336          500 :                                 i_vals=mp2_env%ri_g0w0%kp_grid_Sigma)
     337              : 
     338              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%LOWER_BOUND", &
     339          500 :                                 r_val=mp2_env%ri_g0w0%dos_lower)
     340              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%UPPER_BOUND", &
     341          500 :                                 r_val=mp2_env%ri_g0w0%dos_upper)
     342              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%STEP", &
     343          500 :                                 r_val=mp2_env%ri_g0w0%dos_prec)
     344              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%MIN_LEVEL_SPECTRAL", &
     345          500 :                                 i_val=mp2_env%ri_g0w0%dos_min)
     346              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%MAX_LEVEL_SPECTRAL", &
     347          500 :                                 i_val=mp2_env%ri_g0w0%dos_max)
     348              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%MIN_LEVEL_SELF_ENERGY", &
     349          500 :                                 i_val=mp2_env%ri_g0w0%min_level_self_energy)
     350              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%MAX_LEVEL_SELF_ENERGY", &
     351          500 :                                 i_val=mp2_env%ri_g0w0%max_level_self_energy)
     352              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%GW_DOS%BROADENING", &
     353          500 :                                 r_val=mp2_env%ri_g0w0%dos_eta)
     354              : 
     355              :       mp2_env%ri_g0w0%do_kpoints_Sigma = mp2_env%ri_g0w0%n_special_kp > 0 .OR. &
     356              :                                          mp2_env%ri_g0w0%kp_grid_Sigma(1)* &
     357              :                                          mp2_env%ri_g0w0%kp_grid_Sigma(2)* &
     358          500 :                                          mp2_env%ri_g0w0%kp_grid_Sigma(3) > 0
     359              : 
     360              :       mp2_env%ri_g0w0%print_local_bandgap = BTEST(cp_print_key_should_output(logger%iter_info, &
     361              :                                                                              mp2_section, "RI_RPA%GW%PRINT%LOCAL_BANDGAP"), &
     362          500 :                                                   cp_p_file)
     363              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%LOCAL_BANDGAP%ENERGY_WINDOW", &
     364          500 :                                 r_val=mp2_env%ri_g0w0%energy_window_print_loc_bandgap)
     365              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%LOCAL_BANDGAP%ENERGY_SPACING", &
     366          500 :                                 r_val=mp2_env%ri_g0w0%energy_spacing_print_loc_bandgap)
     367              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%LOCAL_BANDGAP%LDOS_THRESHOLD_GAP", &
     368          500 :                                 r_val=mp2_env%ri_g0w0%ldos_thresh_print_loc_bandgap)
     369              :       CALL section_vals_val_get(mp2_section, "RI_RPA%GW%PRINT%LOCAL_BANDGAP%STRIDE", &
     370          500 :                                 i_vals=mp2_env%ri_g0w0%stride_loc_bandgap)
     371              : 
     372          500 :       NULLIFY (low_scaling_section)
     373          500 :       low_scaling_section => section_vals_get_subs_vals(mp2_section, "LOW_SCALING")
     374              :       CALL section_vals_val_get(low_scaling_section, "_SECTION_PARAMETERS_", &
     375          500 :                                 l_val=mp2_env%do_im_time)
     376              : 
     377          500 :       CALL section_vals_val_get(low_scaling_section, "MEMORY_CUT", i_val=mp2_env%ri_rpa_im_time%cut_memory)
     378          500 :       CALL section_vals_val_get(low_scaling_section, "MEMORY_INFO", l_val=mp2_env%ri_rpa_im_time%memory_info)
     379          500 :       CALL section_vals_val_get(low_scaling_section, "EPS_FILTER", r_val=mp2_env%ri_rpa_im_time%eps_filter)
     380          500 :       CALL section_vals_val_get(low_scaling_section, "EPS_STORAGE_SCALING", r_val=mp2_env%ri_rpa_im_time%eps_compress)
     381          500 :       mp2_env%ri_rpa_im_time%eps_compress = mp2_env%ri_rpa_im_time%eps_compress*mp2_env%ri_rpa_im_time%eps_filter
     382          500 :       mp2_env%ri_rpa_im_time%eps_compress = MAX(mp2_env%ri_rpa_im_time%eps_compress, 1.0E-16_dp)
     383          500 :       CALL section_vals_val_get(low_scaling_section, "EPS_FILTER_FACTOR", r_val=mp2_env%ri_rpa_im_time%eps_filter_factor)
     384              : 
     385              :       CALL section_vals_val_get(low_scaling_section, "DO_KPOINTS", &
     386          500 :                                 l_val=mp2_env%ri_rpa_im_time%do_im_time_kpoints)
     387              :       CALL section_vals_val_get(low_scaling_section, "KPOINTS", &
     388          500 :                                 i_vals=mp2_env%ri_rpa_im_time%kp_grid)
     389         2000 :       mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma = SUM(mp2_env%ri_rpa_im_time%kp_grid) > 0
     390          500 :       IF (mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma) THEN
     391           16 :          CPASSERT(mp2_env%ri_g0w0%do_kpoints_Sigma)
     392              :       END IF
     393              :       CALL section_vals_val_get(low_scaling_section, "KPOINT_WEIGHTS_W", &
     394          500 :                                 i_val=mp2_env%ri_rpa_im_time%kpoint_weights_W_method)
     395              :       CALL section_vals_val_get(low_scaling_section, "EXPONENT_TAILORED_WEIGHTS", &
     396          500 :                                 r_val=mp2_env%ri_rpa_im_time%exp_tailored_weights)
     397              :       CALL section_vals_val_get(low_scaling_section, "REGULARIZATION_RI", &
     398          500 :                                 r_val=mp2_env%ri_rpa_im_time%regularization_RI)
     399              :       CALL section_vals_val_get(low_scaling_section, "EPS_EIGVAL_S", &
     400          500 :                                 r_val=mp2_env%ri_rpa_im_time%eps_eigval_S)
     401              :       CALL section_vals_val_get(low_scaling_section, "EPS_EIGVAL_S_GAMMA", &
     402          500 :                                 r_val=mp2_env%ri_rpa_im_time%eps_eigval_S_Gamma)
     403              :       CALL section_vals_val_get(low_scaling_section, "MAKE_CHI_POS_DEFINITE", &
     404          500 :                                 l_val=mp2_env%ri_rpa_im_time%make_chi_pos_definite)
     405              :       CALL section_vals_val_get(low_scaling_section, "MAKE_OVERLAP_MAT_AO_POS_DEFINITE", &
     406          500 :                                 l_val=mp2_env%ri_rpa_im_time%make_overlap_mat_ao_pos_definite)
     407              :       CALL section_vals_val_get(low_scaling_section, "TRUNC_COULOMB_RI_X", &
     408          500 :                                 l_val=mp2_env%ri_rpa_im_time%trunc_coulomb_ri_x)
     409              :       CALL section_vals_val_get(low_scaling_section, "DO_EXTRAPOLATE_KPOINTS", &
     410          500 :                                 l_val=mp2_env%ri_rpa_im_time%do_extrapolate_kpoints)
     411              :       CALL section_vals_val_get(low_scaling_section, "REL_CUTOFF_TRUNC_COULOMB_RI_X", &
     412          500 :                                 r_val=mp2_env%ri_rpa_im_time%rel_cutoff_trunc_coulomb_ri_x)
     413              :       CALL section_vals_val_get(low_scaling_section, "K_MESH_G_FACTOR", &
     414          500 :                                 i_val=mp2_env%ri_rpa_im_time%k_mesh_g_factor)
     415              : 
     416              :       CALL section_vals_val_get(low_scaling_section, "KEEP_QUADRATURE", &
     417          500 :                                 l_val=mp2_env%ri_rpa_im_time%keep_quad)
     418              : 
     419              :       CALL section_vals_val_get(low_scaling_section, "MIN_BLOCK_SIZE", &
     420          500 :                                 i_val=mp2_env%ri_rpa_im_time%min_bsize)
     421              : 
     422              :       CALL section_vals_val_get(low_scaling_section, "MIN_BLOCK_SIZE_MO", &
     423          500 :                                 i_val=mp2_env%ri_rpa_im_time%min_bsize_mo)
     424              : 
     425          500 :       CALL section_vals_val_get(mp2_section, "RI_SOS_MP2%_SECTION_PARAMETERS_", l_val=do_ri_sos_mp2)
     426          500 :       IF (do_ri_sos_mp2) THEN
     427           44 :          CALL check_method(mp2_env%method)
     428           44 :          mp2_env%method = ri_mp2_laplace
     429              :       END IF
     430          500 :       CALL section_vals_val_get(mp2_section, "RI_SOS_MP2%QUADRATURE_POINTS", i_val=mp2_env%ri_laplace%n_quadrature)
     431          500 :       CALL section_vals_val_get(mp2_section, "RI_SOS_MP2%NUM_INTEG_GROUPS", i_val=mp2_env%ri_laplace%num_integ_groups)
     432              : 
     433          500 :       CALL section_vals_val_get(mp2_section, "RI_MP2%_SECTION_PARAMETERS_", l_val=do_ri_mp2)
     434          500 :       IF (do_ri_mp2) THEN
     435          180 :          CALL check_method(mp2_env%method)
     436          180 :          mp2_env%method = ri_mp2_method_gpw
     437              :       END IF
     438          500 :       CALL section_vals_val_get(mp2_section, "RI_MP2%BLOCK_SIZE", i_val=mp2_env%ri_mp2%block_size)
     439          500 :       CALL section_vals_val_get(mp2_section, "RI_MP2%NUMBER_INTEGRATION_GROUPS", i_val=mp2_env%ri_mp2%number_integration_groups)
     440          500 :       CALL section_vals_val_get(mp2_section, "RI_MP2%PRINT_DGEMM_INFO", l_val=mp2_env%ri_mp2%print_dgemm_info)
     441              : 
     442          500 :       CALL section_vals_val_get(mp2_section, "RI%ROW_BLOCK", i_val=mp2_env%block_size_row)
     443          500 :       CALL section_vals_val_get(mp2_section, "RI%COL_BLOCK", i_val=mp2_env%block_size_col)
     444          500 :       CALL section_vals_val_get(mp2_section, "RI%CALC_COND_NUM", l_val=mp2_env%calc_PQ_cond_num)
     445          500 :       CALL section_vals_val_get(mp2_section, "RI%DO_SVD", l_val=mp2_env%do_svd)
     446          500 :       CALL section_vals_val_get(mp2_section, "RI%EPS_SVD", r_val=mp2_env%eps_svd)
     447          500 :       CALL section_vals_val_get(mp2_section, "RI%ERI_BLKSIZE", i_vals=mp2_env%eri_blksize)
     448          500 :       CALL section_vals_val_get(mp2_section, "RI%RI_METRIC%POTENTIAL_TYPE", i_val=mp2_env%ri_metric%potential_type)
     449          500 :       CALL section_vals_val_get(mp2_section, "RI%RI_METRIC%OMEGA", r_val=mp2_env%ri_metric%omega)
     450          500 :       CALL section_vals_val_get(mp2_section, "RI%RI_METRIC%EPS_RANGE", r_val=mp2_env%eps_range)
     451          500 :       CALL section_vals_val_get(mp2_section, "RI%RI_METRIC%CUTOFF_RADIUS", r_val=mp2_env%ri_metric%cutoff_radius)
     452          500 :       CALL section_vals_val_get(mp2_section, "RI%RI_METRIC%T_C_G_DATA", c_val=mp2_env%ri_metric%filename)
     453          500 :       IF (mp2_env%ri_metric%potential_type == do_potential_short) THEN
     454            0 :          CALL erfc_cutoff(mp2_env%eps_range, mp2_env%ri_metric%omega, mp2_env%ri_metric%cutoff_radius)
     455              :       END IF
     456              : 
     457          500 :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%_SECTION_PARAMETERS_", l_val=do_opt_ri_basis)
     458          500 :       IF (do_opt_ri_basis) THEN
     459            6 :          CALL check_method(mp2_env%method)
     460            6 :          mp2_env%method = mp2_ri_optimize_basis
     461              :       END IF
     462              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%DELTA_I_REL", &
     463          500 :                                 r_val=mp2_env%ri_opt_param%DI_rel)
     464              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%DELTA_RI", &
     465          500 :                                 r_val=mp2_env%ri_opt_param%DRI)
     466              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%EPS_DERIV", &
     467          500 :                                 r_val=mp2_env%ri_opt_param%eps_step)
     468              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%MAX_ITER", &
     469          500 :                                 i_val=mp2_env%ri_opt_param%max_num_iter)
     470              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%BASIS_SIZE", &
     471          500 :                                 i_val=mp2_env%ri_opt_param%basis_quality)
     472          500 :       NULLIFY (tmplist)
     473              :       CALL section_vals_val_get(mp2_section, "RI%OPT_RI_BASIS%NUM_FUNC", &
     474          500 :                                 i_vals=tmplist)
     475          500 :       IF (tmplist(1) > 0) THEN
     476            6 :          ALLOCATE (mp2_env%ri_opt_param%RI_nset_per_l(0:SIZE(tmplist) - 1))
     477           10 :          mp2_env%ri_opt_param%RI_nset_per_l = 0
     478           10 :          DO ival = 1, SIZE(tmplist)
     479           10 :             mp2_env%ri_opt_param%RI_nset_per_l(ival - 1) = tmplist(ival)
     480              :          END DO
     481              :       END IF
     482              : 
     483          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%ERI_METHOD", i_val=mp2_env%eri_method)
     484          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%SIZE_LATTICE_SUM", i_val=mp2_env%mp2_gpw%size_lattice_sum)
     485          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%EPS_FILTER", r_val=mp2_env%mp2_gpw%eps_filter)
     486          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%EPS_GRID", r_val=mp2_env%mp2_gpw%eps_grid)
     487          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%CUTOFF", r_val=mp2_env%mp2_gpw%cutoff)
     488          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%REL_CUTOFF", r_val=mp2_env%mp2_gpw%relative_cutoff)
     489          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%PRINT_LEVEL", i_val=mp2_env%mp2_gpw%print_level)
     490          500 :       CALL section_vals_val_get(mp2_section, "INTEGRALS%WFC_GPW%EPS_PGF_ORB_S", r_val=mp2_env%mp2_gpw%eps_pgf_orb_S)
     491              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%POTENTIAL_TYPE", &
     492          500 :                                 i_val=mp2_env%potential_parameter%potential_type)
     493              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%TRUNCATION_RADIUS", &
     494          500 :                                 r_val=mp2_env%potential_parameter%cutoff_radius)
     495              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%POTENTIAL_DATA", &
     496          500 :                                 c_val=mp2_env%potential_parameter%filename)
     497              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%OMEGA", &
     498          500 :                                 r_val=mp2_env%potential_parameter%omega)
     499              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%SCALE_COULOMB", &
     500          500 :                                 r_val=mp2_env%potential_parameter%scale_coulomb)
     501              :       CALL section_vals_val_get(mp2_section, "INTEGRALS%INTERACTION_POTENTIAL%SCALE_LONGRANGE", &
     502          500 :                                 r_val=mp2_env%potential_parameter%scale_longrange)
     503              : 
     504              :       NULLIFY (mp2_env%eri_mme_param)
     505        12500 :       ALLOCATE (mp2_env%eri_mme_param)
     506              : 
     507          500 :       IF (mp2_env%eri_method == do_eri_mme) THEN
     508           34 :          eri_mme_section => section_vals_get_subs_vals(mp2_section, "INTEGRALS%ERI_MME")
     509           34 :          CALL cp_eri_mme_init_read_input(eri_mme_section, mp2_env%eri_mme_param)
     510              :       END IF
     511              : 
     512              :       ! Set some parameters in case of P screening
     513          500 :       mp2_env%not_last_hfx = .TRUE.
     514          500 :       mp2_env%p_screen = .TRUE.
     515              : 
     516              :       ! Set the CPHF section
     517          500 :       CALL section_vals_val_get(mp2_section, "CANONICAL_GRADIENTS%FREE_HFX_BUFFER", l_val=mp2_env%ri_grad%free_hfx_buffer)
     518          500 :       CALL section_vals_val_get(mp2_section, "CANONICAL_GRADIENTS%EPS_CANONICAL", r_val=mp2_env%ri_grad%eps_canonical)
     519          500 :       CALL section_vals_val_get(mp2_section, "CANONICAL_GRADIENTS%DOT_PRODUCT_BLKSIZE", i_val=mp2_env%ri_grad%dot_blksize)
     520          500 :       CALL section_vals_val_get(mp2_section, "CANONICAL_GRADIENTS%MAX_PARALLEL_COMM", i_val=mp2_env%ri_grad%max_parallel_comm)
     521          500 :       cphf_section => section_vals_get_subs_vals(mp2_section, "CANONICAL_GRADIENTS%CPHF")
     522          500 :       IF (ASSOCIATED(cphf_section)) THEN
     523          500 :          CALL section_vals_val_get(cphf_section, "MAX_ITER", i_val=mp2_env%ri_grad%cphf_max_num_iter)
     524          500 :          CALL section_vals_val_get(cphf_section, "EPS_CONV", r_val=mp2_env%ri_grad%cphf_eps_conv)
     525          500 :          CALL section_vals_val_get(cphf_section, "SCALE_STEP_SIZE", r_val=mp2_env%ri_grad%scale_step_size)
     526          500 :          CALL section_vals_val_get(cphf_section, "SOLVER_METHOD", i_val=mp2_env%ri_grad%z_solver_method)
     527          500 :          CALL section_vals_val_get(cphf_section, "RESTART_EVERY", i_val=mp2_env%ri_grad%cphf_restart)
     528          500 :          CALL section_vals_val_get(cphf_section, "ENFORCE_DECREASE", l_val=mp2_env%ri_grad%enforce_decrease)
     529          500 :          CALL section_vals_val_get(cphf_section, "RECALC_RESIDUAL", l_val=mp2_env%ri_grad%recalc_residual)
     530          500 :          CALL section_vals_val_get(cphf_section, "DO_POLAK_RIBIERE", l_val=mp2_env%ri_grad%polak_ribiere)
     531              :       END IF
     532              : 
     533              :       ! print some info about the MP2 parameters
     534              :       unit_nr = cp_print_key_unit_nr(logger, mp2_section, "PRINT", &
     535          500 :                                      extension=".mp2Log")
     536          500 :       IF ((mp2_env%method /= mp2_method_none) .AND. unit_nr > 0) THEN
     537          250 :          WRITE (unit_nr, '(T2,A)') ""
     538          259 :          SELECT CASE (mp2_env%method)
     539              :          CASE (mp2_method_direct)
     540            9 :             WRITE (unit_nr, '(T2,A)') "MP2| using direct canonical MP2"
     541              :          CASE (mp2_method_gpw)
     542            7 :             WRITE (unit_nr, '(T2,A)') "MP2| using MP2 GPW style"
     543              :          CASE (ri_mp2_method_gpw)
     544           90 :             WRITE (unit_nr, '(T2,A)') "MP2| using RI-MP2-GPW"
     545              :          CASE (ri_rpa_method_gpw)
     546          119 :             WRITE (unit_nr, '(T2,A)') "RI-RPA| using GPW style"
     547              :          CASE (ri_mp2_laplace)
     548           22 :             WRITE (unit_nr, '(T2,A)') "RI-SOS-Laplace-MP2| using GPW style"
     549              :          CASE (mp2_ri_optimize_basis)
     550            3 :             WRITE (unit_nr, '(T2,A)') "MP2| Optimize RI auxiliary basis"
     551              :          CASE DEFAULT
     552          250 :             CPABORT("Unknown MP2 method")
     553              :          END SELECT
     554          250 :          WRITE (unit_nr, '(T2,A)') ""
     555          250 :          CALL m_flush(unit_nr)
     556              :       END IF
     557              : 
     558              :       CALL cp_print_key_finished_output(unit_nr, logger, mp2_section, &
     559          500 :                                         "PRINT")
     560              : 
     561          500 :       CALL timestop(handle)
     562              : 
     563         4500 :    END SUBROUTINE read_mp2_section
     564              : 
     565              : ! **************************************************************************************************
     566              : !> \brief ...
     567              : !> \param method ...
     568              : ! **************************************************************************************************
     569          500 :    SUBROUTINE check_method(method)
     570              :       INTEGER, INTENT(IN)                                :: method
     571              : 
     572              :       CHARACTER(len=*), PARAMETER                        :: routineN = 'check_method'
     573              : 
     574              :       INTEGER                                            :: handle
     575              : 
     576          500 :       CALL timeset(routineN, handle)
     577              : 
     578          500 :       IF (method /= mp2_method_none) THEN
     579            0 :          CPABORT("Please use not more than one method to compute the correlation energy.")
     580              :       END IF
     581              : 
     582          500 :       CALL timestop(handle)
     583              : 
     584          500 :    END SUBROUTINE check_method
     585              : END MODULE mp2_setup
        

Generated by: LCOV version 2.0-1