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
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 28 : 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 28 : CALL timeset(routineN, handle)
52 :
53 28 : CALL create_and_init_bs_env_for_gw(qs_env, bs_env, post_scf_bandstructure_section)
54 :
55 34 : 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 28 : CALL gw_calc_large_cell_Gamma(qs_env, bs_env)
64 :
65 : END SELECT
66 :
67 28 : CALL timestop(handle)
68 :
69 28 : END SUBROUTINE gw
70 :
71 : END MODULE gw_main
72 :
|