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 : 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 22 : 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 22 : CALL timeset(routineN, handle) 44 : 45 : ! general setup of post SCF bandstructure calculation 46 22 : 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 22 : IF (qs_env%bs_env%do_soc) THEN 50 18 : CALL soc(qs_env, qs_env%bs_env) 51 : END IF 52 : 53 : ! GW calculation for eigenvalues/bandstructure for molecules and periodic systems 54 22 : IF (qs_env%bs_env%do_gw) THEN 55 22 : 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 22 : CALL dos_pdos_ldos(qs_env, qs_env%bs_env) 60 : 61 22 : CALL timestop(handle) 62 : 63 22 : END SUBROUTINE post_scf_bandstructure 64 : 65 : END MODULE post_scf_bandstructure_methods