Fix perturbative SOC sign bug and molecular SOC path (#5513)

This commit is contained in:
Bibek Samal 2026-07-07 11:53:22 +02:00 committed by GitHub
parent 9ac08c90f1
commit 1ae7fa728c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 472 additions and 49 deletions

View file

@ -626,11 +626,11 @@ CONTAINS
MATMUL(alkint(1:na, 1:np, 3), TRANSPOSE(bcint(1:nb, 1:np, 1)))
ELSE
l_block_x(1:nb, 1:na) = l_block_x(1:nb, 1:na) - &
l_block_x(1:nb, 1:na) = l_block_x(1:nb, 1:na) + &
MATMUL(blkint(1:nb, 1:np, 1), TRANSPOSE(acint(1:na, 1:np, 1)))
l_block_y(1:nb, 1:na) = l_block_y(1:nb, 1:na) - &
l_block_y(1:nb, 1:na) = l_block_y(1:nb, 1:na) + &
MATMUL(blkint(1:nb, 1:np, 2), TRANSPOSE(acint(1:na, 1:np, 1)))
l_block_z(1:nb, 1:na) = l_block_z(1:nb, 1:na) - &
l_block_z(1:nb, 1:na) = l_block_z(1:nb, 1:na) + &
MATMUL(blkint(1:nb, 1:np, 3), TRANSPOSE(acint(1:na, 1:np, 1)))
END IF
END IF

View file

@ -2695,13 +2695,34 @@ CONTAINS
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
CALL keyword_create(keyword, __LOCATION__, name="ENERGY_WINDOW", &
description="Apply SOC only for states with eigenvalues in the "// &
"interval $[\varepsilon_\mathrm{VBM}-E_\mathrm{window}/2, "// &
"\varepsilon_\mathrm{CBM}+E_\mathrm{window}/2]$. Might be necessary "// &
CALL keyword_create(keyword, __LOCATION__, name="SOC_WINDOW_OCC", &
description="Apply SOC only for states with eigenvalues below VBM "// &
"in the interval $[\varepsilon_\mathrm{VBM}-E_\mathrm{window\_occ}, \ "// &
"\varepsilon_\mathrm{VBM}]$. "// &
"to use for large systems to prevent numerical instabilities.", &
usage="ENERGY_WINDOW 5.0", &
default_r_val=cp_unit_to_cp2k(value=40.0_dp, unit_str="eV"), &
usage="SOC_WINDOW_OCC 5.0", &
default_r_val=-1.0_dp, &
unit_str="eV")
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
CALL keyword_create(keyword, __LOCATION__, name="SOC_WINDOW_VIRT", &
description="Apply SOC only for states with eigenvalues above CBM "// &
"in the interval $[\varepsilon_\mathrm{CBM},\ "// &
"\varepsilon_\mathrm{CBM}+E_\mathrm{window\_virt}]$, "// &
"to use for large systems to prevent numerical instabilities.", &
usage="SOC_WINDOW_VIRT 5.0", &
default_r_val=-1.0_dp, &
unit_str="eV")
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)
CALL keyword_create(keyword, __LOCATION__, name="SOC_WINDOW_SMEARING", &
description="Width of the Fermi-like smoothing at the SOC energy-window edge. "// &
"Default reproduces the value of 1 eV. "// &
"only effective when at least one SOC window is active.", &
usage="SOC_WINDOW_SMEARING 1.0", &
default_r_val=cp_unit_to_cp2k(value=1.0_dp, unit_str="eV"), &
unit_str="eV")
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)

View file

@ -32,6 +32,7 @@ MODULE post_scf_bandstructure_types
USE libint_2c_3c, ONLY: libint_potential_type
USE message_passing, ONLY: mp_para_env_release,&
mp_para_env_type
USE physcon, ONLY: evolt
USE qs_tensors_types, ONLY: neighbor_list_3c_type
#include "./base/base_uses.f90"
@ -303,7 +304,9 @@ MODULE post_scf_bandstructure_types
trunc_coulomb = libint_potential_type()
! parameters for SOC calculation
REAL(KIND=dp) :: energy_window_soc = -1.0_dp
REAL(KIND=dp) :: soc_window_occ = -1.0_dp
REAL(KIND=dp) :: soc_window_virt = -1.0_dp
REAL(KIND=dp) :: soc_window_smearing = 1.0_dp/evolt
! sizes: mat_V_SOC_xyz: xyz, img
TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: mat_V_SOC_xyz => NULL()
TYPE(cp_fm_type), DIMENSION(3) :: fm_V_SOC_xyz_mo = cp_fm_type()

View file

@ -216,7 +216,9 @@ CONTAINS
soc_sec => section_vals_get_subs_vals(bs_sec, "SOC")
CALL section_vals_get(soc_sec, explicit=bs_env%do_soc)
CALL section_vals_val_get(soc_sec, "ENERGY_WINDOW", r_val=bs_env%energy_window_soc)
CALL section_vals_val_get(soc_sec, "SOC_WINDOW_OCC", r_val=bs_env%soc_window_occ)
CALL section_vals_val_get(soc_sec, "SOC_WINDOW_VIRT", r_val=bs_env%soc_window_virt)
CALL section_vals_val_get(soc_sec, "SOC_WINDOW_SMEARING", r_val=bs_env%soc_window_smearing)
NULLIFY (dos_pdos_sec)
dos_pdos_sec => section_vals_get_subs_vals(bs_sec, "DOS")
@ -768,7 +770,7 @@ CONTAINS
CHARACTER(LEN=*), PARAMETER :: routineN = 'diagonalize_ks_matrix'
INTEGER :: handle, ispin
INTEGER :: handle, ikp, ispin
REAL(KIND=dp) :: CBM, VBM
CALL timeset(routineN, handle)
@ -801,6 +803,13 @@ CONTAINS
CALL timestop(handle)
! Gamma-only path for molecules: eigenval_scf is filled here from the Gamma eigenvalues
DO ispin = 1, bs_env%n_spin
DO ikp = 1, bs_env%nkp_bs_and_DOS
bs_env%eigenval_scf(:, ikp, ispin) = bs_env%eigenval_scf_Gamma(:, ispin)
END DO
END DO
END SUBROUTINE diagonalize_ks_matrix
! **************************************************************************************************
@ -1193,10 +1202,25 @@ CONTAINS
IF (bs_env%unit_nr > 0) THEN
WRITE (bs_env%unit_nr, '(A)') ''
WRITE (bs_env%unit_nr, '(T2,A,F43.1,A)') 'SOC requested, SOC energy window:', &
bs_env%energy_window_soc*evolt, ' eV'
IF (bs_env%soc_window_occ > 0.0_dp) THEN
WRITE (bs_env%unit_nr, '(T2,A,T71,F10.2)') 'SOC requested, SOC energy window occ (eV):', &
bs_env%soc_window_occ*evolt
ELSE
WRITE (bs_env%unit_nr, '(T2,A,T71,A10)') 'SOC requested, SOC energy window occ (eV):', &
' no window'
END IF
IF (bs_env%soc_window_virt > 0.0_dp) THEN
WRITE (bs_env%unit_nr, '(T2,A,T71,F10.2)') 'SOC requested, SOC energy window virt (eV):', &
bs_env%soc_window_virt*evolt
ELSE
WRITE (bs_env%unit_nr, '(T2,A,T71,A10)') 'SOC requested, SOC energy window virt (eV):', &
' no window'
END IF
IF (bs_env%soc_window_occ > 0.0_dp .OR. bs_env%soc_window_virt > 0.0_dp) THEN
WRITE (bs_env%unit_nr, '(T2,A,T71,F10.2)') 'SOC requested, SOC window smearing (eV):', &
bs_env%soc_window_smearing*evolt
END IF
END IF
END IF
IF (bs_env%do_ldos) THEN
@ -1300,7 +1324,7 @@ CONTAINS
END IF
! compute DFT+SOC eigenvalues; based on these, compute band edges, DOS and LDOS
CALL SOC_ev(bs_env, qs_env, ikp, bs_env%eigenval_scf, band_edges_scf, &
CALL SOC_ev(bs_env, qs_env, ikp, bs_env%eigenval_scf, &
E_min, cfm_mos_ikp, DOS_scf_SOC, PDOS_scf_SOC, &
band_edges_scf_SOC, eigenval_spinor, cfm_spinor_wf_ikp)
@ -1316,7 +1340,7 @@ CONTAINS
IF (bs_env%do_gw) THEN
! compute G0W0+SOC eigenvalues; based on these, compute band edges, DOS and LDOS
CALL SOC_ev(bs_env, qs_env, ikp, bs_env%eigenval_G0W0, band_edges_G0W0, &
CALL SOC_ev(bs_env, qs_env, ikp, bs_env%eigenval_G0W0, &
E_min, cfm_mos_ikp, DOS_G0W0_SOC, PDOS_G0W0_SOC, &
band_edges_G0W0_SOC, eigenval_spinor_G0W0, cfm_spinor_wf_ikp)
@ -1639,7 +1663,6 @@ CONTAINS
!> \param qs_env ...
!> \param ikp ...
!> \param eigenval_no_SOC ...
!> \param band_edges_no_SOC ...
!> \param E_min ...
!> \param cfm_mos_ikp ...
!> \param DOS ...
@ -1648,14 +1671,13 @@ CONTAINS
!> \param eigenval_spinor ...
!> \param cfm_spinor_wf_ikp ...
! **************************************************************************************************
SUBROUTINE SOC_ev(bs_env, qs_env, ikp, eigenval_no_SOC, band_edges_no_SOC, E_min, cfm_mos_ikp, &
SUBROUTINE SOC_ev(bs_env, qs_env, ikp, eigenval_no_SOC, E_min, cfm_mos_ikp, &
DOS, PDOS, band_edges, eigenval_spinor, cfm_spinor_wf_ikp)
TYPE(post_scf_bandstructure_type), POINTER :: bs_env
TYPE(qs_environment_type), POINTER :: qs_env
INTEGER :: ikp
REAL(KIND=dp), DIMENSION(:, :, :) :: eigenval_no_SOC
TYPE(band_edges_type) :: band_edges_no_SOC
REAL(KIND=dp) :: E_min
TYPE(cp_cfm_type), DIMENSION(2) :: cfm_mos_ikp
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: DOS
@ -1673,6 +1695,8 @@ CONTAINS
cfm_ks_ikp_spinor, cfm_mos_ikp_spinor, &
cfm_SOC_ikp_spinor, cfm_work_ikp_spinor
!TYPE(band_edges_type) :: band_edges_no_SOC
CALL timeset(routineN, handle)
n_ao = bs_env%n_ao
@ -1730,12 +1754,13 @@ CONTAINS
! unbound states couple to the states around the Fermi level)
eigenval_spinor_no_SOC(1:n_ao) = eigenval_no_SOC(1:n_ao, ikp, 1)
eigenval_spinor_no_SOC(n_ao + 1:) = eigenval_no_SOC(1:n_ao, ikp, bs_env%n_spin)
IF (bs_env%energy_window_soc > 0.0_dp) THEN
IF (bs_env%soc_window_occ > 0.0_dp .OR. bs_env%soc_window_virt > 0.0_dp) THEN
CALL remove_soc_outside_energy_window_mo(cfm_ks_ikp_spinor, &
bs_env%energy_window_soc, &
bs_env%soc_window_virt, &
bs_env%soc_window_smearing, &
eigenval_spinor_no_SOC, &
band_edges_no_SOC%VBM, &
band_edges_no_SOC%CBM)
bs_env%e_fermi(1))
END IF
! 4. h^G0W0+SOC_nn',σσ'(k_i) = ε_nσ^G0W0(k_i) δ_nn' δ_σσ' + V^SOC_nn',σσ'(k_i)
@ -2792,12 +2817,27 @@ CONTAINS
! careful: inside add_dbcsr_submat, mat_V_SOC_xyz is multiplied by i because the real matrix
! mat_V_SOC_xyz is antisymmetric as V_SOC matrix is purely imaginary and Hermitian
! V_x * sigma_x: sigma_x = ((0,1),(1,0))
! ud block (1,s): +i*V_x
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(1, 1)%matrix, &
str, s, 1, z_one, .TRUE.)
str, 1, s, z_one, .FALSE.)
! du block (s,1): +i*V_x
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(1, 1)%matrix, &
str, s, 1, z_one, .FALSE.)
! V_y * sigma_y: sigma_y = ((0,-i),(i,0))
! ud block (1,s): i*(i*V_y) = -V_y (extra gaussi factor)
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(2, 1)%matrix, &
str, s, 1, gaussi, .TRUE.)
str, 1, s, gaussi, .FALSE.)
! du block (s,1): -i*(i*V_y) = +V_y (extra -gaussi factor)
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(2, 1)%matrix, &
str, s, 1, -gaussi, .FALSE.)
! V_z * sigma_z: sigma_z = ((1,0),(0,-1))
! uu block (1,1): +i*V_z
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(3, 1)%matrix, &
str, 1, 1, z_one, .FALSE.)
! dd block (s,s): -i*V_z
CALL add_dbcsr_submat(bs_env%cfm_SOC_spinor_ao(1), bs_env%mat_V_SOC_xyz(3, 1)%matrix, &
str, s, s, -z_one, .FALSE.)

View file

@ -33,6 +33,7 @@ MODULE soc_pseudopotential_methods
USE qs_neighbor_list_types, ONLY: get_neighbor_list_set_p,&
neighbor_list_set_p_type
USE virial_types, ONLY: virial_type
!USE physcon, ONLY: evolt
#include "./base/base_uses.f90"
IMPLICIT NONE
@ -182,16 +183,17 @@ CONTAINS
! **************************************************************************************************
!> \brief ...
!> \param cfm_ks_spinor ...
!> \param e_win ...
!> \param e_win_cbm ...
!> \param temp_smear ...
!> \param eigenval ...
!> \param E_HOMO ...
!> \param E_LUMO ...
!> \param e_fermi ...
! **************************************************************************************************
SUBROUTINE remove_soc_outside_energy_window_mo(cfm_ks_spinor, e_win, eigenval, E_HOMO, E_LUMO)
SUBROUTINE remove_soc_outside_energy_window_mo(cfm_ks_spinor, e_win_cbm, temp_smear, &
eigenval, e_fermi)
TYPE(cp_cfm_type) :: cfm_ks_spinor
REAL(KIND=dp) :: e_win
REAL(KIND=dp) :: e_win_cbm, temp_smear
REAL(KIND=dp), DIMENSION(:) :: eigenval
REAL(KIND=dp) :: E_HOMO, E_LUMO
REAL(KIND=dp) :: e_fermi
CHARACTER(LEN=*), PARAMETER :: routineN = 'remove_soc_outside_energy_window_mo'
@ -199,7 +201,9 @@ CONTAINS
ncol_global, ncol_local, nrow_global, &
nrow_local
INTEGER, DIMENSION(:), POINTER :: col_indices, row_indices
REAL(KIND=dp) :: E_i, E_j
REAL(KIND=dp) :: E_i, E_j, w_i, w_j, x_i, x_j
!REAL(KIND=dp) :: E_HOMO, E_LUMO, e_fermi
! Remove SOC outside of energy window (otherwise, numerical problems arise
! because energetically low semicore states and energetically very high
@ -220,6 +224,10 @@ CONTAINS
CPASSERT(nrow_global == SIZE(eigenval))
CPASSERT(ncol_global == SIZE(eigenval))
! Apply a smooth energy window to the SOC coupling matrix. Each state gets a
! weight in [0,1]: 1 = full SOC, decaying to 0 outside the window via a
! Fermi-like function of width temp_smear. A matrix element coupling states i
! and j is scaled by SQRT(w_i*w_j), applying the damping symmetrically to both.
DO jjB = 1, ncol_local
j_glob = col_indices(jjB)
DO iiB = 1, nrow_local
@ -227,12 +235,25 @@ CONTAINS
E_i = eigenval(i_glob)
E_j = eigenval(j_glob)
IF (E_i < E_HOMO - 0.5_dp*e_win .OR. E_i > E_LUMO + 0.5_dp*e_win .OR. &
E_j < E_HOMO - 0.5_dp*e_win .OR. E_j > E_LUMO + 0.5_dp*e_win) THEN
cfm_ks_spinor%local_data(iiB, jjB) = 0.0_dp
IF (E_i <= e_fermi) THEN
!x_i = ABS(E_i - e_fermi) - 0.5_dp * e_win_vbm
w_i = 1.0_dp
ELSE
x_i = ABS(E_i - e_fermi) - e_win_cbm
w_i = 1.0_dp/(EXP(x_i/temp_smear) + 1.0_dp)
END IF
IF (E_j <= e_fermi) THEN
!x_j = ABS(E_j - e_fermi) - 0.5_dp * e_win_vbm
w_j = 1.0_dp
ELSE
x_j = ABS(E_j - e_fermi) - e_win_cbm
w_j = 1.0_dp/(EXP(x_j/temp_smear) + 1.0_dp)
END IF
cfm_ks_spinor%local_data(iiB, jjB) = &
cfm_ks_spinor%local_data(iiB, jjB)*SQRT(w_i*w_j)
END DO
END DO

View file

@ -6,5 +6,5 @@
"G0W0_kpoints_in_self_energy_gap_printing.inp" = [{matcher="E_G0W0_gap_old", tol=1e-03, ref=18.7767}]
"G0W0_kpoints_in_self_energy_open_shell.inp" = [{matcher="E_G0W0_alpha_gap_old", tol=1e-04, ref=13.9024},
{matcher="E_G0W0_beta_gap_old", tol=1e-04, ref=27.5399}]
"G0W0_IH_SOC.inp" = [{matcher="E_G0W0_SOC_gap_old", tol=1e-04, ref=17.2425}]
"G0W0_IH_SOC.inp" = [{matcher="E_G0W0_SOC_gap_old", tol=5e-02, ref=16.7473}]
#EOF

View file

@ -53,7 +53,6 @@
NUM_TIME_FREQ_POINTS 10
&END GW
&SOC
ENERGY_WINDOW 3.0
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES

View file

@ -55,7 +55,6 @@
NUM_TIME_FREQ_POINTS 10
&END GW
&SOC
ENERGY_WINDOW 4.0
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES

View file

@ -46,7 +46,6 @@
NUM_TIME_FREQ_POINTS 10
&END GW
&SOC
ENERGY_WINDOW 3.0
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES

View file

@ -45,7 +45,6 @@
NUM_TIME_FREQ_POINTS 10
&END GW
&SOC
ENERGY_WINDOW 3.0
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES

View file

@ -0,0 +1,86 @@
&GLOBAL
PRINT_LEVEL SILENT
PROJECT scalable_GW_kpsym
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME BASIS_MOLOPT
BASIS_SET_FILE_NAME HFX_BASIS
BASIS_SET_FILE_NAME ./REGTEST_BASIS
POTENTIAL_FILE_NAME GTH_SOC_POTENTIALS
SORT_BASIS EXP
&KPOINTS
PARALLEL_GROUP_SIZE -1
SCHEME MONKHORST-PACK 1 4 4
SYMMETRY ON
VERBOSE T
&END KPOINTS
&MGRID
CUTOFF 100
REL_CUTOFF 20
&END MGRID
&QS
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-15
METHOD GPW
&END QS
&SCF
ADDED_MOS -1
EPS_SCF 1.0E-5
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&END XC
&END DFT
&PROPERTIES
&BANDSTRUCTURE
&DOS
KPOINTS 1 2 2
&END DOS
&GW
EPS_FILTER 1.0E-5
FREQ_MAX_FIT 27.211
NUM_TIME_FREQ_POINTS 6
&END GW
&SOC
SOC_WINDOW_OCC 5
SOC_WINDOW_SMEARING 2
SOC_WINDOW_VIRT 15
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES
&SUBSYS
&CELL
ABC [angstrom] 12.000 6.000 8.000
MULTIPLE_UNIT_CELL 1 1 1
PERIODIC YZ
&END CELL
&COORD
H 0.0 -0.5 -4.5
Te 0.5 0.0 4.5
H 0.0 0.5 -4.5
&END COORD
&KIND H
BASIS_SET ORB DZVP-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q1
&END KIND
&KIND Te
BASIS_SET ORB SZV-MOLOPT-SR-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q6
&END KIND
&TOPOLOGY
MULTIPLE_UNIT_CELL 1 1 1
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL

View file

@ -0,0 +1,82 @@
&GLOBAL
PRINT_LEVEL SILENT
PROJECT scalable_GW
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME BASIS_MOLOPT
BASIS_SET_FILE_NAME HFX_BASIS
BASIS_SET_FILE_NAME ./REGTEST_BASIS
POTENTIAL_FILE_NAME GTH_SOC_POTENTIALS
SORT_BASIS EXP
&KPOINTS
PARALLEL_GROUP_SIZE -1
SCHEME MONKHORST-PACK 1 4 4
&END KPOINTS
&MGRID
CUTOFF 100
REL_CUTOFF 20
&END MGRID
&QS
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-15
METHOD GPW
&END QS
&SCF
ADDED_MOS -1
EPS_SCF 1.0E-5
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&END XC
&END DFT
&PROPERTIES
&BANDSTRUCTURE
&DOS
KPOINTS 1 2 2
&END DOS
&GW
EPS_FILTER 1.0E-5
FREQ_MAX_FIT 27.211
NUM_TIME_FREQ_POINTS 6
&END GW
&SOC
SOC_WINDOW_OCC 2
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES
&SUBSYS
&CELL
ABC [angstrom] 12.000 6.000 8.000
MULTIPLE_UNIT_CELL 1 1 1
PERIODIC YZ
&END CELL
&COORD
H 0.0 -0.5 -4.5
Te 0.5 0.0 4.5
H 0.0 0.5 -4.5
&END COORD
&KIND H
BASIS_SET ORB DZVP-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q1
&END KIND
&KIND Te
BASIS_SET ORB SZV-MOLOPT-SR-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q6
&END KIND
&TOPOLOGY
MULTIPLE_UNIT_CELL 1 1 1
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL

View file

@ -0,0 +1,84 @@
&GLOBAL
PRINT_LEVEL SILENT
PROJECT scalable_GW
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME BASIS_MOLOPT
BASIS_SET_FILE_NAME HFX_BASIS
BASIS_SET_FILE_NAME ./REGTEST_BASIS
POTENTIAL_FILE_NAME GTH_SOC_POTENTIALS
SORT_BASIS EXP
&KPOINTS
PARALLEL_GROUP_SIZE -1
SCHEME MONKHORST-PACK 1 4 4
&END KPOINTS
&MGRID
CUTOFF 100
REL_CUTOFF 20
&END MGRID
&QS
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-15
METHOD GPW
&END QS
&SCF
ADDED_MOS -1
EPS_SCF 1.0E-5
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&END XC
&END DFT
&PROPERTIES
&BANDSTRUCTURE
&DOS
KPOINTS 1 2 2
&END DOS
&GW
EPS_FILTER 1.0E-5
FREQ_MAX_FIT 27.211
NUM_TIME_FREQ_POINTS 6
&END GW
&SOC
SOC_WINDOW_OCC 5
SOC_WINDOW_SMEARING 2
SOC_WINDOW_VIRT 15
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES
&SUBSYS
&CELL
ABC [angstrom] 12.000 6.000 8.000
MULTIPLE_UNIT_CELL 1 1 1
PERIODIC YZ
&END CELL
&COORD
H 0.0 -0.5 -4.5
Te 0.5 0.0 4.5
H 0.0 0.5 -4.5
&END COORD
&KIND H
BASIS_SET ORB DZVP-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q1
&END KIND
&KIND Te
BASIS_SET ORB SZV-MOLOPT-SR-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q6
&END KIND
&TOPOLOGY
MULTIPLE_UNIT_CELL 1 1 1
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL

View file

@ -0,0 +1,82 @@
&GLOBAL
PRINT_LEVEL SILENT
PROJECT scalable_GW
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME BASIS_MOLOPT
BASIS_SET_FILE_NAME HFX_BASIS
BASIS_SET_FILE_NAME ./REGTEST_BASIS
POTENTIAL_FILE_NAME GTH_SOC_POTENTIALS
SORT_BASIS EXP
&KPOINTS
PARALLEL_GROUP_SIZE -1
SCHEME MONKHORST-PACK 1 4 4
&END KPOINTS
&MGRID
CUTOFF 100
REL_CUTOFF 20
&END MGRID
&QS
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-15
METHOD GPW
&END QS
&SCF
ADDED_MOS -1
EPS_SCF 1.0E-5
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&END XC
&END DFT
&PROPERTIES
&BANDSTRUCTURE
&DOS
KPOINTS 1 2 2
&END DOS
&GW
EPS_FILTER 1.0E-5
FREQ_MAX_FIT 27.211
NUM_TIME_FREQ_POINTS 6
&END GW
&SOC
SOC_WINDOW_VIRT 10
&END SOC
&END BANDSTRUCTURE
&END PROPERTIES
&SUBSYS
&CELL
ABC [angstrom] 12.000 6.000 8.000
MULTIPLE_UNIT_CELL 1 1 1
PERIODIC YZ
&END CELL
&COORD
H 0.0 -0.5 -4.5
Te 0.5 0.0 4.5
H 0.0 0.5 -4.5
&END COORD
&KIND H
BASIS_SET ORB DZVP-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q1
&END KIND
&KIND Te
BASIS_SET ORB SZV-MOLOPT-SR-GTH
BASIS_SET RI_AUX RI-dummy-regtest
POTENTIAL GTH-PBE-q6
&END KIND
&TOPOLOGY
MULTIPLE_UNIT_CELL 1 1 1
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL

View file

@ -1,22 +1,30 @@
"01_G0W0_periodic_H2O.inp" = [{matcher="E_G0W0_direct_gap", tol=1e-03, ref=9.861}]
"02_G0W0_IH_SOC_LDOS.inp" = [{matcher="E_G0W0_direct_gap", tol=1e-03, ref=17.826},
{matcher="E_SCF_SOC_gap", tol=1e-03, ref=11.344}]
{matcher="E_SCF_SOC_gap", tol=1e-03, ref=11.248}]
"03_G0W0_bandstructure_IH_chain.inp" = [{matcher="E_G0W0_direct_gap", tol=5e-04, ref=21.962},
{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=21.678}]
{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=21.622}]
"04_G0W0_SOC_TeH_chain_open_shell_kp_extrapol.inp" = [{matcher="E_G0W0_direct_gap", tol=1e-03, ref=5.174}]
"05_G0W0_SOC_TeH_chain_open_shell.inp" = [{matcher="E_G0W0_direct_gap", tol=5e-04, ref=5.178},
{matcher="E_SCF_SOC_gap", tol=5e-04, ref=0.306},
{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=5.134}]
{matcher="E_SCF_SOC_gap", tol=5e-04, ref=0.257},
{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=5.127}]
"06_G0W0_periodic_H2O_Hedin_shift.inp" = [{matcher="E_G0W0_direct_gap", tol=1e-03, ref=10.417}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.315}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.389}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_kpsym.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.315}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_occ.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.383}]
"08_G0W0_periodic_H2Te_kp_sampling_SCF_FREQ_MAX_FIT_10_eV.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.780}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_virt.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.387}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_occ_virt_smear.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.388}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_kpsym.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.389}]
"07_G0W0_periodic_H2Te_kp_sampling_SCF_kpsym_occ_virt_smear.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.388}]
"08_G0W0_periodic_H2Te_kp_sampling_SCF_FREQ_MAX_FIT_10_eV.inp" = [{matcher="E_G0W0_SOC_gap", tol=5e-04, ref=10.871}]
#EOF