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 10 : !> \author Jan Wilhelm 11 : !> \date 07.2023 12 : ! ************************************************************************************************** 13 : MODULE gw_main 14 : USE gw_large_cell_Gamma, ONLY: gw_calc_large_cell_Gamma 15 : USE gw_small_cell_full_kp, ONLY: gw_calc_small_cell_full_kp 16 : USE gw_utils, ONLY: create_and_init_bs_env_for_gw 17 : USE input_constants, ONLY: large_cell_Gamma,& 18 : small_cell_full_kp 19 : USE input_section_types, ONLY: section_vals_type 20 : USE post_scf_bandstructure_types, ONLY: post_scf_bandstructure_type 21 : USE qs_environment_types, ONLY: qs_environment_type 22 : #include "./base/base_uses.f90" 23 : 24 : IMPLICIT NONE 25 : 26 : PRIVATE 27 : 28 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'gw_main' 29 : 30 : PUBLIC :: gw 31 : 32 : CONTAINS 33 : 34 : ! ************************************************************************************************** 35 : !> \brief Perform GW band structure calculation 36 : !> \param qs_env ... 37 : !> \param bs_env ... 38 : !> \param post_scf_bandstructure_section ... 39 : !> \par History 40 : !> * 07.2023 created [Jan Wilhelm] 41 : ! ************************************************************************************************** 42 34 : SUBROUTINE gw(qs_env, bs_env, post_scf_bandstructure_section) 43 : TYPE(qs_environment_type), POINTER :: qs_env 44 : TYPE(post_scf_bandstructure_type), POINTER :: bs_env 45 : TYPE(section_vals_type), POINTER :: post_scf_bandstructure_section 46 : 47 : CHARACTER(LEN=*), PARAMETER :: routineN = 'gw' 48 : 49 : INTEGER :: handle 50 : 51 34 : CALL timeset(routineN, handle) 52 : 53 34 : CALL create_and_init_bs_env_for_gw(qs_env, bs_env, post_scf_bandstructure_section) 54 : 55 40 : SELECT CASE (bs_env%small_cell_full_kp_or_large_cell_Gamma) 56 : 57 : CASE (small_cell_full_kp) 58 : 59 6 : CALL gw_calc_small_cell_full_kp(qs_env, bs_env) 60 : 61 : CASE (large_cell_Gamma) 62 : 63 34 : CALL gw_calc_large_cell_Gamma(qs_env, bs_env) 64 : 65 : END SELECT 66 : 67 34 : CALL timestop(handle) 68 : 69 34 : END SUBROUTINE gw 70 : 71 : END MODULE gw_main 72 :