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 : MODULE post_scf_bandstructure_methods
9 : USE gw_main, ONLY: gw
10 : USE input_section_types, ONLY: section_vals_type
11 : USE post_scf_bandstructure_utils, ONLY: create_and_init_bs_env,&
12 : dos_pdos_ldos,&
13 : soc
14 : USE qs_environment_types, ONLY: qs_environment_type
15 : USE qs_scf, ONLY: scf
16 : #include "./base/base_uses.f90"
17 :
18 : IMPLICIT NONE
19 :
20 : PRIVATE
21 :
22 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'post_scf_bandstructure_methods'
23 :
24 : PUBLIC :: post_scf_bandstructure
25 :
26 : CONTAINS
27 :
28 : ! **************************************************************************************************
29 : !> \brief Perform post-SCF band structure calculations from higher level methods
30 : !> \param qs_env Quickstep environment
31 : !> \param post_scf_bandstructure_section ...
32 : !> \par History
33 : !> * 07.2023 created [Jan Wilhelm]
34 : ! **************************************************************************************************
35 28 : SUBROUTINE post_scf_bandstructure(qs_env, post_scf_bandstructure_section)
36 : TYPE(qs_environment_type), POINTER :: qs_env
37 : TYPE(section_vals_type), POINTER :: post_scf_bandstructure_section
38 :
39 : CHARACTER(LEN=*), PARAMETER :: routineN = 'post_scf_bandstructure'
40 :
41 : INTEGER :: handle
42 :
43 28 : CALL timeset(routineN, handle)
44 :
45 : ! general setup of post SCF bandstructure calculation
46 28 : CALL create_and_init_bs_env(qs_env, qs_env%bs_env, post_scf_bandstructure_section)
47 :
48 : ! shifts of eigenvalues/bandstructure due to spin-orbit coupling from pseudopotentials
49 28 : IF (qs_env%bs_env%do_soc) THEN
50 12 : CALL soc(qs_env, qs_env%bs_env)
51 : END IF
52 :
53 : ! GW calculation for eigenvalues/bandstructure for molecules and periodic systems
54 28 : IF (qs_env%bs_env%do_gw) THEN
55 28 : CALL gw(qs_env, qs_env%bs_env, post_scf_bandstructure_section)
56 : END IF
57 :
58 : ! density of states (DOS), projected DOS, local DOS for DFT, DFT+SOC, G0W0, G0W0+SOC
59 28 : CALL dos_pdos_ldos(qs_env, qs_env%bs_env)
60 :
61 28 : CALL timestop(handle)
62 :
63 28 : END SUBROUTINE post_scf_bandstructure
64 :
65 : END MODULE post_scf_bandstructure_methods
|