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