Skip to content

Commit 0ca4e04

Browse files
committed
Merge branch 'deepmodeling-develop' into develop
2 parents cc9d759 + 6cd8fb9 commit 0ca4e04

File tree

870 files changed

+20781
-19322
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

870 files changed

+20781
-19322
lines changed

.github/workflows/coverage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
env:
2626
OMP_NUM_THREADS: 1
2727
run: |
28-
cmake --build build --target test ARGS="-V --timeout 21600"
28+
cmake --build build --target test ARGS="-V --timeout 21600" || exit 0
2929
- name: Upload Coverage to Codecov
3030
uses: codecov/codecov-action@v4
3131
if: ${{ ! cancelled() }}

.gitmodules

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
[submodule "deps/LibRI"]
2-
path = deps/LibRI
3-
url = https://github.com/abacusmodeling/LibRI.git
4-
branch = master
5-
[submodule "deps/LibComm"]
6-
path = deps/LibComm
7-
url = https://github.com/abacusmodeling/LibComm.git
8-
branch = master
91
[submodule "deps/libpaw_interface"]
102
path = deps/libpaw_interface
113
url = https://github.com/wenfei-li/libpaw_interface

CMakeLists.txt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -538,13 +538,10 @@ endif()
538538
if(ENABLE_LIBRI)
539539
set_if_higher(CMAKE_CXX_STANDARD 14)
540540
if(LIBRI_DIR)
541-
include_directories(${LIBRI_DIR}/include)
542-
elseif(GIT_SUBMODULE)
543-
git_submodule_update()
544-
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/deps/LibRI/include)
545541
else()
546-
message(FATAL_ERROR "Must provide LIBRI_DIR for RI related features.")
542+
find_package(LibRI REQUIRED)
547543
endif()
544+
include_directories(${LIBRI_DIR}/include)
548545
target_link_libraries(${ABACUS_BIN_NAME} ri module_exx_symmetry)
549546
add_compile_definitions(__EXX EXX_DM=3 EXX_H_COMM=2 TEST_EXX_LCAO=0
550547
TEST_EXX_RADIAL=1)
@@ -555,13 +552,10 @@ if(ENABLE_LIBRI OR DEFINED LIBCOMM_DIR)
555552
endif()
556553
if(ENABLE_LIBCOMM)
557554
if(LIBCOMM_DIR)
558-
include_directories(${LIBCOMM_DIR}/include)
559-
elseif(GIT_SUBMODULE)
560-
git_submodule_update()
561-
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/deps/LibComm/include)
562555
else()
563-
message(FATAL_ERROR "Must provide LIBCOMM_DIR for RI related features.")
556+
find_package(LibComm REQUIRED)
564557
endif()
558+
include_directories(${LIBCOMM_DIR}/include)
565559
endif()
566560

567561
if(ENABLE_PAW)
@@ -715,6 +709,7 @@ target_link_libraries(
715709
hamilt_stodft
716710
psi
717711
psi_initializer
712+
psi_overall_init
718713
esolver
719714
vdw
720715
device

cmake/FindLibComm.cmake

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
###############################################################################
2+
# - Find LibComm
3+
# Find the native LibComm files.
4+
#
5+
# LIBCOMM_FOUND - True if LibComm is found.
6+
# LIBCOMM_DIR - Where to find LibComm files.
7+
8+
find_path(LIBCOMM_DIR
9+
include/Comm/Comm_Tools.h
10+
HINTS ${LIBCOMM_DIR}
11+
HINTS ${LibComm_DIR}
12+
HINTS ${libcomm_DIR}
13+
)
14+
15+
if(NOT LIBCOMM_DIR)
16+
include(FetchContent)
17+
FetchContent_Declare(
18+
LibComm
19+
URL https://github.com/abacusmodeling/LibComm/archive/refs/tags/v0.1.1.tar.gz
20+
)
21+
FetchContent_Populate(LibComm)
22+
set(LIBCOMM_DIR ${libcomm_SOURCE_DIR})
23+
endif()
24+
# Handle the QUIET and REQUIRED arguments and
25+
# set LIBCOMM_FOUND to TRUE if all variables are non-zero.
26+
include(FindPackageHandleStandardArgs)
27+
find_package_handle_standard_args(LibComm DEFAULT_MSG LIBCOMM_DIR)
28+
29+
# Copy the results to the output variables and target.
30+
mark_as_advanced(LIBCOMM_DIR)

cmake/FindLibRI.cmake

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
###############################################################################
2+
# - Find LibRI
3+
# Find the native LibRI files.
4+
#
5+
# LIBRI_FOUND - True if LibRI is found.
6+
# LIBRI_DIR - Where to find LibRI files.
7+
8+
find_path(LIBRI_DIR
9+
include/RI/version.h
10+
HINTS ${LIBRI_DIR}
11+
HINTS ${LibRI_DIR}
12+
HINTS ${libri_DIR}
13+
)
14+
15+
if(NOT LIBRI_DIR)
16+
include(FetchContent)
17+
FetchContent_Declare(
18+
LibRI
19+
URL https://github.com/abacusmodeling/LibRI/archive/refs/tags/v0.2.1.1.tar.gz
20+
)
21+
FetchContent_Populate(LibRI)
22+
set(LIBRI_DIR ${libri_SOURCE_DIR})
23+
endif()
24+
# Handle the QUIET and REQUIRED arguments and
25+
# set LIBRI_FOUND to TRUE if all variables are non-zero.
26+
include(FindPackageHandleStandardArgs)
27+
find_package_handle_standard_args(LibRI DEFAULT_MSG LIBRI_DIR)
28+
29+
# Copy the results to the output variables and target.
30+
mark_as_advanced(LIBRI_DIR)

deps/LibComm

Lines changed: 0 additions & 1 deletion
This file was deleted.

deps/LibRI

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/input_files/input-main.md

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@
8888
- [scf\_thr](#scf_thr)
8989
- [scf\_ene\_thr](#scf_ene_thr)
9090
- [scf\_thr\_type](#scf_thr_type)
91+
- [scf\_os\_stop](#scf_os_stop)
92+
- [scf\_os\_thr](#scf_os_thr)
93+
- [scf\_os\_ndim](#scf_os_ndim)
9194
- [chg\_extrap](#chg_extrap)
9295
- [lspinorb](#lspinorb)
9396
- [noncolin](#noncolin)
@@ -420,6 +423,7 @@
420423
- [pexsi\_zero\_thr](#pexsi_zero_thr)
421424
- [Linear Response TDDFT](#linear-response-tddft)
422425
- [xc\_kernel](#xc_kernel)
426+
- [lr\_init\_xc\_kernel](#lr_init_xc_kernel)
423427
- [lr\_solver](#lr_solver)
424428
- [lr\_thr](#lr_thr)
425429
- [nocc](#nocc)
@@ -985,7 +989,7 @@ calculations.
985989

986990
- **Type**: String
987991
- **Description**: In our package, the XC functional can either be set explicitly using the `dft_functional` keyword in `INPUT` file. If `dft_functional` is not specified, ABACUS will use the xc functional indicated in the pseudopotential file.
988-
On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names such as 'LDA', 'PBE', 'SCAN'. A complete list of 'short-hand' expressions can be found in [the source code](../../../source/module_hamilt_general/module_xc/xc_functional.cpp). The other way is only available when ***compiling with LIBXC***, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, 'dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'. The list of LIBXC keywords can be found on its [website](https://www.tddft.org/programs/libxc/functionals/). In this way, **we support all the LDA,GGA and mGGA functionals provided by LIBXC**.
992+
On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using 'short-hand' names such as 'LDA', 'PBE', 'SCAN'. A complete list of 'short-hand' expressions can be found in [the source code](../../../source/module_hamilt_general/module_xc/xc_functional.cpp). The other way is only available when ***compiling with LIBXC***, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, dft_functional='LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC'. The list of LIBXC keywords can be found on its [website](https://libxc.gitlab.io/functionals/). In this way, **we support all the LDA,GGA and mGGA functionals provided by LIBXC**.
989993

990994
Furthermore, the old INPUT parameter exx_hybrid_type for hybrid functionals has been absorbed into dft_functional. Options are `hf` (pure Hartree-Fock), `pbe0`(PBE0), `hse` (Note: in order to use HSE functional, LIBXC is required). Note also that HSE has been tested while PBE0 has NOT been fully tested yet, and the maximum CPU cores for running exx in parallel is $N(N+1)/2$, with N being the number of atoms. And forces for hybrid functionals are not supported yet.
991995

@@ -1173,7 +1177,7 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The
11731177

11741178
- **Type**: Integer
11751179
- **Description**: Print out energy for each band for every printe step
1176-
- **Default**: 100
1180+
- **Default**: `scf_nmax`
11771181

11781182
### scf_nmax
11791183

@@ -1205,6 +1209,29 @@ Note: In new angle mixing, you should set `mixing_beta_mag >> mixing_beta`. The
12051209

12061210
- **Default**: 1 (plane-wave basis), or 2 (localized atomic orbital basis).
12071211

1212+
### scf_os_stop
1213+
1214+
- **Type**: bool
1215+
- **Description**: For systems that are difficult to converge, the SCF process may exhibit oscillations in charge density, preventing further progress toward the specified convergence criteria and resulting in continuous oscillation until the maximum number of steps is reached; this greatly wastes computational resources. To address this issue, this function allows ABACUS to terminate the SCF process early upon detecting oscillations, thus reducing subsequent meaningless calculations. The detection of oscillations is based on the slope of the logarithm of historical drho values.. To this end, Least Squares Method is used to calculate the slope of the logarithmically taken drho for the previous `scf_os_ndim` iterations. If the calculated slope is larger than `scf_os_thr`, stop the SCF.
1216+
1217+
- **0**: The SCF will continue to run regardless of whether there is oscillation or not.
1218+
- **1**: If the calculated slope is larger than `scf_os_thr`, stop the SCF.
1219+
1220+
- **Default**: false
1221+
1222+
### scf_os_thr
1223+
1224+
- **Type**: double
1225+
- **Description**: The slope threshold to determine if the SCF is stuck in a charge density oscillation. If the calculated slope is larger than `scf_os_thr`, stop the SCF.
1226+
1227+
- **Default**: -0.01
1228+
1229+
### scf_os_ndim
1230+
1231+
- **Type**: int
1232+
- **Description**: To determine the number of old iterations' `drho` used in slope calculations.
1233+
- **Default**: `mixing_ndim`
1234+
12081235
### chg_extrap
12091236

12101237
- **Type**: String
@@ -1362,8 +1389,8 @@ These variables are used to control the geometry relaxation.
13621389
### relax_nmax
13631390

13641391
- **Type**: Integer
1365-
- **Description**: The maximal number of ionic iteration steps, the minimum value is 1.
1366-
- **Default**: 1
1392+
- **Description**: The maximal number of ionic iteration steps. If set to 0, the code performs a quick "dry run", stopping just after initialization. This is useful to check for input correctness and to have the summary printed.
1393+
- **Default**: 1 for SCF, 50 for relax and cell-relax calcualtions
13671394

13681395
### relax_cg_thr
13691396

@@ -1733,14 +1760,14 @@ The band (KS orbital) energy for each (k-point, spin, band) will be printed in t
17331760

17341761
- **Type**: Boolean
17351762
- **Availability**: Numerical atomic orbital basis
1736-
- **Description**: Whether to print Hamiltonian matrices H(R)/density matrics DM(R) in npz format. This feature does not work for gamma-only calculations. Currently only intended for internal usage.
1763+
- **Description**: Whether to print Hamiltonian matrices $H(R)$/density matrics $DM(R)$ in npz format. This feature does not work for gamma-only calculations. Currently only intended for internal usage.
17371764
- **Default**: False
17381765

17391766
### dm_to_rho
17401767

17411768
- **Type**: Boolean
17421769
- **Availability**: Numerical atomic orbital basis
1743-
- **Description**: Reads density matrix DM(R) in npz format and creates electron density on grids. This feature does not work for gamma-only calculations. Only supports serial calculations. Currently only intended for internal usage.
1770+
- **Description**: Reads density matrix $DM(R)$ in npz format and creates electron density on grids. This feature does not work for gamma-only calculations. Only supports serial calculations. Currently only intended for internal usage.
17441771
- **Default**: False
17451772

17461773
### out_app_flag
@@ -2899,7 +2926,7 @@ These variables are used to control DFT+U correlated parameters
28992926

29002927
- where $\gamma$ is a parameter that adjusts the relative weight of the error function to the derivative error function.
29012928
- **Unit**: Bohr
2902-
- **Default**: 5.0
2929+
- **Default**: 3.0
29032930

29042931
[back to top](#full-list-of-input-keywords)
29052932

@@ -3917,6 +3944,15 @@ These parameters are used to solve the excited states using. e.g. LR-TDDFT.
39173944
Currently supported: `RPA`, `LDA`, `PBE`, `HSE`, `HF`.
39183945
- **Default**: LDA
39193946

3947+
### lr_init_xc_kernel
3948+
3949+
- **Type**: String
3950+
- **Description**: The method to initalize the xc kernel.
3951+
- "default": Calculate xc kerenel ($f_\text{xc}$) from the ground-state charge density.
3952+
- "file": Read the xc kernel $f_\text{xc}$ on grid from the provided files. The following words should be the paths of ".cube" files, where the first 1 (*[nspin](#nspin)==1*) or 3 (*[nspin](#nspin)==2*, namely spin-aa, spin-ab and spin-bb) will be read in. The parameter [xc_kernel](#xc_kernel) will be invalid. Now only LDA-type kernel is supproted as the potential will be calculated by directly multiplying the transition density.
3953+
- "from_charge_file": Calculate fxc from the charge density read from the provided files. The following words should be the paths of ".cube" files, where the first [nspin]($nspin) files will be read in.
3954+
- **Default**: "default"
3955+
39203956
### lr_solver
39213957

39223958
- **Type**: String

examples/band/lcao_Si2/run.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ if [[ ! -f scf.output ]] ||
1919
[[ ! ( "$(tail -1 OUT.ABACUS/running_scf.log)" == " Total Time :"* ) ]] ||
2020
[[ ! ( "$(tail -1 OUT.ABACUS/running_nscf.log)" == " Total Time :"* ) ]]
2121
then
22-
echo "job is failed!"
22+
echo "job failed!"
2323
exit 1
2424
else
25-
echo "job is successed!"
25+
echo "job succeeded!"
2626
exit 0
2727
fi
2828

examples/band/pw_Al/run.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ if [[ ! -f scf.output ]] ||
1919
[[ ! ( "$(tail -1 OUT.ABACUS/running_scf.log)" == " Total Time :"* ) ]] ||
2020
[[ ! ( "$(tail -1 OUT.ABACUS/running_nscf.log)" == " Total Time :"* ) ]]
2121
then
22-
echo "job is failed!"
22+
echo "job failed!"
2323
exit 1
2424
else
25-
echo "job is successed!"
25+
echo "job succeeded!"
2626
exit 0
2727
fi

0 commit comments

Comments
 (0)