-
Notifications
You must be signed in to change notification settings - Fork 1
/
gw_main.F
72 lines (51 loc) · 2.8 KB
/
gw_main.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
!--------------------------------------------------------------------------------------------------!
! CP2K: A general program to perform molecular dynamics simulations !
! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
! !
! SPDX-License-Identifier: GPL-2.0-or-later !
!--------------------------------------------------------------------------------------------------!
! **************************************************************************************************
!> \brief
!> \author Jan Wilhelm
!> \date 07.2023
! **************************************************************************************************
MODULE gw_main
USE gw_large_cell_Gamma, ONLY: gw_calc_large_cell_Gamma
USE gw_small_cell_full_kp, ONLY: gw_calc_small_cell_full_kp
USE gw_utils, ONLY: create_and_init_bs_env_for_gw
USE input_constants, ONLY: large_cell_Gamma,&
small_cell_full_kp
USE input_section_types, ONLY: section_vals_type
USE post_scf_bandstructure_types, ONLY: post_scf_bandstructure_type
USE qs_environment_types, ONLY: qs_environment_type
#include "./base/base_uses.f90"
IMPLICIT NONE
PRIVATE
CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'gw_main'
PUBLIC :: gw
CONTAINS
! **************************************************************************************************
!> \brief Perform GW band structure calculation
!> \param qs_env ...
!> \param bs_env ...
!> \param post_scf_bandstructure_section ...
!> \par History
!> * 07.2023 created [Jan Wilhelm]
! **************************************************************************************************
SUBROUTINE gw(qs_env, bs_env, post_scf_bandstructure_section)
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(post_scf_bandstructure_type), POINTER :: bs_env
TYPE(section_vals_type), POINTER :: post_scf_bandstructure_section
CHARACTER(LEN=*), PARAMETER :: routineN = 'gw'
INTEGER :: handle
CALL timeset(routineN, handle)
CALL create_and_init_bs_env_for_gw(qs_env, bs_env, post_scf_bandstructure_section)
SELECT CASE (bs_env%small_cell_full_kp_or_large_cell_Gamma)
CASE (small_cell_full_kp)
CALL gw_calc_small_cell_full_kp(qs_env, bs_env)
CASE (large_cell_Gamma)
CALL gw_calc_large_cell_Gamma(qs_env, bs_env)
END SELECT
CALL timestop(handle)
END SUBROUTINE gw
END MODULE gw_main