diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 21a5e1df9b..39cd089b52 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -2310,7 +2310,7 @@ Warning: this function is not robust enough for the current version. Please try - 0: Don't include bandgap label - 1: Include target bandgap label (see [deepks\_band\_range](#deepks_band_range) for more details) - 2: Include multiple bandgap label (see [deepks\_band\_range](#deepks_band_range) for more details) - - 3: For systems containing H atoms only, HOMO is defined as the max occupation expect H atoms and the bandgap label is the energy between HOMO and (HOMO + 1) + - 3: Used for systems containing H atoms. Here HOMO is defined as the max occupation except H atoms and the bandgap label is the energy between HOMO and (HOMO + 1) - **Default**: 0 ### deepks_band_range diff --git a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp index 3e450221bb..a1061addee 100644 --- a/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/source_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -305,6 +305,10 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // Calculate the bandgap for each k point ModuleBase::matrix o_tot(nks, range); + if (nocc + PARAM.inp.deepks_band_range[0] < 0 || nocc + PARAM.inp.deepks_band_range[1] >= ekb.nc) + { + ModuleBase::WARNING_QUIT("out_deepks_labels", "DeePKS band index out of range! Please check if `deepks_band_range` is reasonable!"); + } for (int iks = 0; iks < nks; ++iks) { int ib = 0; diff --git a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref b/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref index b4a2174c4a..936d94803e 100644 --- a/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref +++ b/tests/09_DeePKS/103_NO_GO_deepks_bandgap_3/result.ref @@ -4,7 +4,7 @@ deepks_desc 2.297551 deepks_dm_eig 10.742704784158393 deepks_e_label 17.152853550955058 deepks_edelta 0.09792547271228358 -deepks_o_label 0.29172556580830844 -deepks_odelta 9.932412417318348e-05 -deepks_oprec -0.45169372175959677 +deepks_o_label 0.08594440507271628 +deepks_odelta 0.0013346191380371325 +deepks_oprec 0.01788986161267927 totaltimeref 1.22 diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU index d96524cc65..5a76b6ea66 100644 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU +++ b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/STRU @@ -1,32 +1,32 @@ ATOMIC_SPECIES -Si 1.00 Si_ONCV_PBE-1.2.upf -O 1.00 O_ONCV_PBE-1.2.upf +H 1.00 H_ONCV_PBE-1.0.upf +O 1.00 O_ONCV_PBE-1.0.upf LATTICE_CONSTANT 1 LATTICE_VECTORS -15 0 0 -0 15 0 -0 0 9 +15 0 0 +0 15 0 +0 0 15 ATOMIC_POSITIONS -Direct # Cartesian(Unit is LATTICE_CONSTANT) +Cartesian # Cartesian(Unit is LATTICE_CONSTANT) -Si +H 0.0 -1 -0.5 0.5 0 0 0 0 +2 +2.451268787740 18.304568063522 29.094778093001 0 0 0 +0.634768813069 17.692018052980 31.090158495369 0 0 0 O 0.0 -2 -0.5 0.5 0.25 0 0 0 -0.5 0.5 0.75 0 0 0 +1 +0.953925982272 17.270156608314 29.386199785767 0 0 0 NUMERICAL_ORBITAL -Si_gga_8au_60Ry_2s2p1d.orb -O_gga_7au_60Ry_2s2p1d.orb +H_gga_6au_60Ry_1s.orb +O_gga_6au_60Ry_1s1p.orb NUMERICAL_DESCRIPTOR ../Model_ProjOrb/2au_20Ry_jle.orb diff --git a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref index 1582fefe3b..af081db36c 100644 --- a/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref +++ b/tests/09_DeePKS/103_NO_KP_deepks_bandgap_3/result.ref @@ -1,10 +1,10 @@ -etotref -959.2783700856231 -etotperatomref -319.7594566952 -deepks_desc 2.456992 -deepks_dm_eig 15.506898379534249 -deepks_e_label 35.25281724192405 -deepks_edelta 0.09772974729136052 -deepks_o_label 0.3368945080257191 -deepks_odelta 0.0014646771995326935 -deepks_oprec -1.2637665734018695 -totaltimeref 1.53 +etotref -463.0496320856034 +etotperatomref -154.3498773619 +deepks_desc 2.195131 +deepks_dm_eig 10.54665348088368 +deepks_e_label 17.016754013120217 +deepks_edelta 0.09796908127552584 +deepks_o_label 0.14114716003295213 +deepks_odelta 0.0031174723761221435 +deepks_oprec 0.16883858360329146 +totaltimeref 2.96 diff --git a/tests/integrate/tools/catch_deepks_properties.sh b/tests/integrate/tools/catch_deepks_properties.sh index 74b66f7dc5..d9039d261e 100644 --- a/tests/integrate/tools/catch_deepks_properties.sh +++ b/tests/integrate/tools/catch_deepks_properties.sh @@ -111,9 +111,9 @@ process_many_npys() { # energy process_npy "$mode" "abs" "etot" "" "deepks_e_label$suffix" "$output_file" process_npy "$mode" "delta" "etot" "ebase" "deepks_edelta$suffix" "$output_file" - - # For deepks_bandgap = 1 - if ! test -z "$deepks_bandgap" && [ $deepks_bandgap == 1 ]; then + + # For deepks_bandgap > 0 + if ! test -z "$deepks_bandgap" && [ $deepks_bandgap -gt 0 ]; then process_npy "$mode" "abs" "otot" "" "deepks_o_label$suffix" "$output_file" process_npy "$mode" "delta" "otot" "obase" "deepks_odelta$suffix" "$output_file" process_npy "$mode" "numpy" "orbpre" "" "deepks_oprec$suffix" "$output_file"