You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Fix: stress error with Dojo pseudopotential and LIBXC
* Fix: nspin2/4 mismatch with nspin1 with PBE
* Fix: add test case to CI
* Fix: delete useless warning of write_dmr
* Fix: DFTU output format
* Fix: error of noncolin and autoset mag
* Fix: reference of noncolin
* Revert "Fix: nspin2/4 mismatch with nspin1 with PBE"
This reverts commit ffd91ff.
* Perf: optimize the stream strategy in module_gint (#5845)
* optimize stream strategy
* limit max threads
* Fix: modify orb info manually (#5853)
* Fix: parse_expression for scientific notation (#5882)
* Fix: parse_expression for scientific notation
* modify openmp strategy (#5898)
* Fix document description for ocp and ocp_set (#5896)
* Fix: Resolve compilation issue with Libxc 7.0.0 in ABACUS (#5905)
* Fix: Resolve compilation issue with Libxc 7.0.0 in ABACUS
* Fix: Resolve compilation issue with Libxc 7.0.0 in ABACUS: fix a minor test issue (304_NO_GO_AF_atommag)
* Fix a bug and a magic number in module_exx_symmetry (#5848)
* fix a magic number in get_euler_angle
* do not allow higher symmetry of bvk supercell than the original cell
* Docs: update docs about init_wfc (#5912)
* Fix the wrong symmetry analysis at nspin=2 (#5926)
* analyze magnetic group without time-reversal symmetry
* fix: need to calculate direct coordinates again
* fix a bug about hcontainer in exx nscf (#5927)
* fix cmake bug (#5929)
* inline function of complexarray (#5964)
* modify doc (#5965)
* Fix segmentation fault in integrate test 312_NO_GO_wfc_get_wf (#5970)
* Doc: polish Quick Start part of online doc (#6006)
* polish Quick Start in online doc
* set scf_thr 1e-6
* correct typo
* test: fix Dockerfile.intel (#5999)
Co-authored-by: root <pxlxingliang>
* fix the format (#6008)
* Fix : out_mat_dh will lead to different result with MPI-1core with MPI-4core (#6018)
* Fix: Enhance the warning message when the XC name cannot be recognized. (#6025)
* Update latest Intel oneAPI default compiler for cxx (#6035)
* Update latest Intel oneAPI default compiler for cxx
* Update elpa version to newest in demo cmake script
* Fix: Angular momentum quantum number check in reading SOC pseudopot file (#6027)
* Fix the angular momentum quantum number check in reading SOC pseudopot file
* Fix related unit test problem and add an SOC pseudopot file
* Refactor SOC check logic for improved readability
* Feature: support the `default` as the value of `dft_functional` when initialize vdw (#5949)
* Feature: support the `default` as the value of `dft_functional` when initialize vdw
* Refactor a littble bit
* Optimize: Compilation time of vdwd3_autoset_xcparam.cpp (#6042)
The compilation time of the vdwd3_autoset_xcparam.cpp file is reduced from 250 seconds to just 5 seconds in my machine.
Thanks to the suggestion from DeepSeek: replacing dynamic initialization with a static array for constructing the std::map
* directly enter exx loop when init_wfc=file (#6019)
* Perf: openmp for cal_force_stress (#5956)
* remove wrong timer
* omp for cal_force_stress
* openmp for cal_force_stress in dftu
* openmp for cal_force_stress in dspin
* little change
* fix bug
* fix a bug
* Fix: DFT+U force&stress with of some elements are -1 (#6049)
Co-authored-by: dyzheng <[email protected]>
* Fix: add the print header for `cusolvermp` in scf info (#6038)
* fix an output for debug (#6066)
* Perf: optimize cal_DMR and folding_HR (#6068)
* modify variable name
* modify variable name
* change pointer to ptr
* modify variable name
* modify some variable names
* move functions from .cpp to .h
* optimize cal_DMR
* add schedule(dynamic)
* optimize func_folding
* add a check before calculating EXX force (#6067)
* fixing issue #5961 (#6071)
* modify warning output (#6074)
* Version: 3.10.0
---------
Co-authored-by: dzzz2001 <[email protected]>
Co-authored-by: Yu Liu <[email protected]>
Co-authored-by: jiyuyang <[email protected]>
Co-authored-by: Taoni Bao <[email protected]>
Co-authored-by: Qianrui Liu <[email protected]>
Co-authored-by: LUNASEA <[email protected]>
Co-authored-by: wqzhou <[email protected]>
Co-authored-by: Peng Xingliang <[email protected]>
Co-authored-by: Xinyuan Liang <[email protected]>
Co-authored-by: Liang Sun <[email protected]>
Co-authored-by: Chen Nuo <[email protected]>
Co-authored-by: kirk0830 <[email protected]>
Co-authored-by: dyzheng <[email protected]>
Co-authored-by: Jie Bao <[email protected]>
Copy file name to clipboardExpand all lines: README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@
12
12
13
13
# About ABACUS
14
14
15
-
ABACUS (Atomic-orbital Based Ab-initio Computation at UStc) is an open-source package based on density functional theory (DFT). The package utilizes both plane wave and numerical atomic basis sets with the usage of norm-conserving pseudopotentials to describe the interactions between nuclear ions and valence electrons. ABACUS supports LDA, GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, the package allows geometry optimizations and ab-initio molecular dynamics with various ensembles. The package also provides a variety of advanced functionalities for simulating materials, including the DFT+U, VdW corrections, and implicit solvation model, etc. In addition, ABACUS strives to provide a general infrastructure to facilitate the developments and applications of novel machine-learning-assisted DFT methods (DeePKS, DP-GEN, DeepH, DeePTB etc.) in molecular and material simulations.
15
+
ABACUS (**A**tomic-orbital **B**ased **A**b-initio **C**omputation at **US**tc) is an open-source package based on density functional theory (DFT). The package utilizes both plane wave and numerical atomic basis sets with the usage of pseudopotentials to describe the interactions between nuclear ions and valence electrons. ABACUS supports LDA, GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, the package allows geometry optimizations and ab-initio molecular dynamics with various ensembles. The package also provides a variety of advanced functionalities for simulating materials, including the DFT+U, VdW corrections, and implicit solvation model, etc. In addition, ABACUS strives to provide a general infrastructure to facilitate the developments and applications of novel machine-learning-assisted DFT methods (DeePKS, DP-GEN, DeepH, DeePTB etc.) in molecular and material simulations.
16
16
17
17
# Online Documentation
18
18
For detailed documentation, please refer to [our documentation website](https://abacus.deepmodeling.com/).
Copy file name to clipboardExpand all lines: docs/CITATIONS.md
+8
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,18 @@ The following references are required to be cited when using ABACUS. Specificall
4
4
5
5
-**For general purpose:**
6
6
7
+
*For LCAO basis:*
8
+
7
9
Mohan Chen, G. C. Guo, and Lixin He. "Systematically improvable optimized atomic basis sets for ab initio calculations." Journal of Physics: Condensed Matter 22.44 (2010): 445501.
8
10
9
11
Pengfei Li, et al. "Large-scale ab initio simulations based on systematically improvable atomic basis." Computational Materials Science 112 (2016): 503-517.
10
12
13
+
Peize Lin, Xinguo Ren, Xiaohui Liu, Lixin He. Ab initio electronic structure calculations based on numerical atomic orbitals: Basic fomalisms and recent progresses. Wiley Interdisciplinary Reviews: Computational Molecular Science, 2024, 14(1): e1687.
14
+
15
+
*For LCAO and PW basis:*
16
+
17
+
Weiqing Zhou, Deye Zheng, Qianrui Liu, et al. ABACUS: An Electronic Structure Analysis Package for the AI Era. arXiv preprint arXiv:2501.08697, 2025.
18
+
11
19
-**If Stochastic DFT is used:**
12
20
13
21
Qianrui Liu, and Mohan Chen. "Plane-Wave-Based Stochastic-Deterministic Density Functional Theory for Extended Systems." <https://arxiv.org/abs/2204.05662>.
Copy file name to clipboardExpand all lines: docs/advanced/input_files/input-main.md
+15-8
Original file line number
Diff line number
Diff line change
@@ -564,7 +564,7 @@ These variables are used to control general system parameters.
564
564
### init_wfc
565
565
566
566
-**Type**: String
567
-
-**Description**: Only useful for plane wave basis only now. It is the name of the starting wave functions. In the future. we should also make this variable available for localized orbitals set.
567
+
-**Description**: The type of the starting wave functions.
568
568
569
569
Available options are:
570
570
@@ -576,6 +576,8 @@ These variables are used to control general system parameters.
576
576
with `psi_initializer 1`, two more options are supported:
577
577
- nao: from numerical atomic orbitals. If they are not enough, other wave functions are initialized with random numbers.
578
578
- nao+random: add small random numbers on numerical atomic orbitals
579
+
580
+
> Only the `file` option is useful for the lcao basis set, which is mostly used when [calculation](#calculation) is set to `set_wf` and `get_pchg`. See more details in [out_wfc_lcao](#out_wfc_lcao).
579
581
-**Default**: atomic
580
582
581
583
### init_chg
@@ -3518,19 +3520,24 @@ These variables are used to control berry phase and wannier90 interface paramete
3518
3520
3519
3521
-**Type**: Boolean
3520
3522
-**Availability**:
3521
-
- For PW and LCAO codes. if set to 1, occupations of bands will be setting of "ocp_set".
3522
-
- For TDDFT in LCAO codes. if set to 1, occupations will be constrained since second ionic step.
3523
-
- For OFDFT, this feature can't be used.
3523
+
- For PW and LCAO codes: If set to 1, the band occupations will be determined by `ocp_set`.
3524
+
- For RT-TDDFT in LCAO codes: If set to 1, same as above, but the occupations will be constrained starting from the second ionic step.
3525
+
- For OFDFT: This feature is not available.
3524
3526
-**Description**:
3525
-
- True: fix the occupations of bands.
3526
-
- False: do not fix the occupations of bands.
3527
+
- True: Fixes the band occupations based on the values specified in `ocp_set`.
3528
+
- False: Does not fix the band occupations.
3527
3529
-**Default**: False
3528
3530
3529
3531
### ocp_set
3530
3532
3531
3533
-**Type**: String
3532
-
-**Description**: If ocp is True, the ocp_set is a string to set the number of occupancy, like '1 10 * 1 0 1' representing the 13 band occupancy, 12th band occupancy 0 and the rest 1, the code is parsing this string into an array through a regular expression.
3533
-
-**Default**: none
3534
+
-**Description**:
3535
+
- If `ocp` is set to 1, `ocp_set` must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation `N*x` can be used to repeat a value `x` for `N` bands.
3536
+
- Example:
3537
+
-`1 10*1 0 1` represents occupations for 13 bands, where the 12th band is fully unoccupied (`0`), and all others are occupied (`1`).
3538
+
- For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations).
3539
+
- Incorrect specification of `ocp_set` could lead to inconsistencies in electron counting, causing the calculation to terminate with an error.
ABACUS applies the density difference between two SCF steps (labeled as `DRHO` in the screen output) as the convergence criterion, which is considered as a more robust choice compared with the energy difference. `DRHO` is calculated via `DRHO = |rho(G)-rho_previous(G)|^2`. Note that the energy difference between two SCF steps (labed as `EDIFF`) is also printed out in the screen output.
111
111
112
-
**4. Why EDIFF is much slower than DRHO?
112
+
**4. Why EDIFF is much slower than DRHO?**
113
113
114
114
For metaGGA calculations, it is normal because in addition to charge density, kinetic density also needs to be considered in metaGGA calculations. In this case, you can try set `mixing_tau = true`. If you find EDIFF is much slower than DRHO for non-metaGGA calculations, please start a new issue to us.
Copy file name to clipboardExpand all lines: docs/quick_start/easy_install.md
+6-4
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Easy Installation
2
2
3
-
This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS(and possibly its requirements) from the source code using the latest compiler for the best performace. You can try [toolchain](#install-requirements-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker.
3
+
This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS(and possibly its requirements) from the source code using the latest compiler for the best performace. You can try [toolchain](#install-requirements-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker.
4
4
5
5
## Get ABACUS source code
6
6
@@ -79,7 +79,7 @@ git remote -v
79
79
80
80
# Replace "origin" with "upstream" or the remote name corresponding to deepmodeling/abacus-develop if necessary
81
81
git fetch origin
82
-
git checkout v3.8.4# Replace the tag with the latest version
82
+
git checkout v3.x.x# Replace the tag with the latest version, like v3.10.0
83
83
git describe --tags # Verify if the tag has been successfully checked out
84
84
```
85
85
@@ -106,7 +106,7 @@ Here, 'build' is the path for building ABACUS; and '-D' is used for setting up s
106
106
-`CMAKE_INSTALL_PREFIX`: the path of ABACUS binary to install; `/usr/local/bin/abacus` by default
107
107
- Compilers
108
108
-`CMAKE_CXX_COMPILER`: C++ compiler; usually `g++`(GNU C++ compiler) or `icpx`(Intel C++ compiler). Can also set from environment variable `CXX`. It is OK to use MPI compiler here.
109
-
-`MPI_CXX_COMPILER`: MPI wrapper for C++ compiler; usually `mpicxx` or `mpiicpc`(for Intel MPI).
109
+
-`MPI_CXX_COMPILER`: MPI wrapper for C++ compiler; usually `mpicxx` or `mpiicpx`(for Intel toolkits) or `mpiicpc`(for classic Intel Compiler Classic MPI before 2024.0).
110
110
- Requirements: Unless indicated, CMake will try to find under default paths.
111
111
-`MKLROOT`: If environment variable `MKLROOT` exists, `cmake` will take MKL as a preference, i.e. not using `LAPACK`, `ScaLAPACK` and `FFTW`. To disable MKL, unset environment variable `MKLROOT`, or pass `-DMKLROOT=OFF` to `cmake`.
112
112
-`LAPACK_DIR`: Path to OpenBLAS library `libopenblas.so`(including BLAS and LAPACK)
@@ -136,7 +136,7 @@ Here, 'build' is the path for building ABACUS; and '-D' is used for setting up s
> Notice: If the MPI library you are using is OpenMPI, which is commonly the case, when you set the number of processes to 1 or 2, OpenMPI will default to `--bind-to core`. This means that no matter how many threads you set, these threads will be restricted to run on 1 or 2 CPU cores. Therefore, setting a higher number of OpenMP threads might result in slower program execution. Hence, when using `mpirun -n` set to 1 or 2, it is recommended to set `--bind-to none` to avoid performance degradation. For example:`OMP_NUM_THREADS=6 mpirun --bind-to none -n 1 abacus`. The detailed binding strategy of OpenMPI can be referred to at https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#quick-summary.
196
+
195
197
ABACUS will try to determine the number of threads used by each process if `OMP_NUM_THREADS` is not set. However, it is **required** to set `OMP_NUM_THREADS` before running `mpirun` to avoid potential performance issues.
196
198
197
199
Please refer to [hands-on guide](./hands_on.md) for more instructions.
Copy file name to clipboardExpand all lines: docs/quick_start/hands_on.md
+7-11
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
### A quick LCAO example
6
6
7
-
ABACUS is well known for its support of LCAO (Linear Combination of Atomic Orbital) basis set in calculating periodic condensed matter systems, so it's a good choice to start from a LCAO example of self-consistent field (SCF) calculation. Here, FCC MgO has been chosen as a quick start example. The default name of a structure file in ABACUS is `STRU`. The `STRU` file for FCC MgO in a LCAO calculation is shown below:
7
+
ABACUS is well known for its support of LCAO (Linear Combination of Atomic Orbital) basis set in calculating periodic condensed matter systems. It's a good choice to start from a LCAO example of self-consistent field (SCF) calculation. Here, FCC MgO has been chosen as a quick start example. The default name of a structure file in ABACUS is `STRU`. The `STRU` file for FCC MgO in a LCAO calculation is shown below:
8
8
9
9
```
10
10
#This is the atom file containing all the information
@@ -48,11 +48,10 @@ Next, the `INPUT` file is required, which sets all key parameters to direct ABAC
48
48
```
49
49
INPUT_PARAMETERS
50
50
suffix MgO
51
-
ntype 2
52
51
pseudo_dir ./
53
52
orbital_dir ./
54
53
ecutwfc 100 # Rydberg
55
-
scf_thr 1e-4 # Rydberg
54
+
scf_thr 1e-6 # SCF criterion
56
55
basis_type lcao
57
56
calculation scf # this is the key parameter telling abacus to do a scf calculation
58
57
```
@@ -71,7 +70,7 @@ Gamma
71
70
After all the above input files have been set, one should be able to run the first quick example. The simplest way is to use the command line, e.g.:
72
71
73
72
```
74
-
mpirun -np 2 abacus
73
+
OMP_NUM_THREADS=1 mpirun -np 2 abacus
75
74
```
76
75
77
76
The main output information is stored in the file `OUT.MgO/running_scf.log`, which starts with
@@ -138,10 +137,9 @@ The `INPUT` file follows as:
138
137
```
139
138
INPUT_PARAMETERS
140
139
suffix MgO
141
-
ntype 2
142
140
pseudo_dir ./
143
141
ecutwfc 100 # Rydberg
144
-
scf_thr 1e-4 # Rydberg
142
+
scf_thr 1e-6 # SCF criterion
145
143
basis_type pw # changes the type of basis set
146
144
calculation scf # this is the key parameter telling abacus to do a scf calculation
147
145
```
@@ -201,12 +199,11 @@ The `INPUT` is provided as follows:
201
199
```
202
200
INPUT_PARAMETERS
203
201
suffix MgO
204
-
ntype 2
205
202
nelec 0.0
206
203
pseudo_dir ./
207
204
orbital_dir ./
208
205
ecutwfc 100 # Rydberg
209
-
scf_thr 1e-4 # Rydberg
206
+
scf_thr 1e-6 # SCF criterion
210
207
basis_type lcao
211
208
calculation cell-relax # this is the key parameter telling abacus to do a optimization calculation
212
209
force_thr_ev 0.01 # the threshold of the force convergence, in unit of eV/Angstrom
@@ -223,11 +220,10 @@ The `INPUT` is provided as follows:
223
220
```
224
221
INPUT_PARAMETERS
225
222
suffix MgO
226
-
ntype 2
227
223
nelec 0.0
228
224
pseudo_dir ./
229
225
ecutwfc 100 # Rydberg
230
-
scf_thr 1e-4 # Rydberg
226
+
scf_thr 1e-6 # SCF criterion
231
227
basis_type pw
232
228
calculation cell-relax # this is the key parameter telling abacus to do a optimization calculation
233
229
force_thr_ev 0.01 # the threshold of the force convergence, in unit of eV/Angstrom
@@ -236,4 +232,4 @@ relax_nmax 100 # the maximal number of ionic iteration steps
236
232
out_stru 1
237
233
```
238
234
239
-
Use the same `KPT`, `STRU`, and pseudopotential files as in the above SCF-PW examples. The final optimized structure can be found in `STRU_NOW.cif` and `OUT.MgO/running_cell-relax.log`.
235
+
Use the same `KPT`, `STRU`, and pseudopotential files as in the above SCF-PW examples. The final optimized structure can be found in `STRU_NOW.cif` and `STRU_ION_D` with different format.
Copy file name to clipboardExpand all lines: docs/quick_start/output.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ The following files are the central output files for ABACUS. After executing the
6
6
7
7
Different from `INPUT` given by the users, `OUT.suffix/INPUT` contains all parameters in ABACUS.
8
8
9
-
> **Note:**`OUT.suffix/INPUT` contain the initial default of ABACUS instead of the real parameters used in calculations. If you want to figure out the real parameters used in calculations, you can open `OUT.suffix/runing_scf.log` and research corresponding parameter you are interested.
9
+
> **Note:**`OUT.suffix/INPUT` contain the initial default of ABACUS instead of the real parameters used in calculations. This file is stored for reproduction in case the default value is changed during development. If you want to figure out the real parameters used in calculations, you can open `OUT.suffix/runing_scf.log` and research corresponding parameter you are interested.
10
10
11
11
For a complete list of input parameters, please consult this [instruction](../advanced/input_files/input-main.md).
12
12
@@ -33,9 +33,9 @@ BAND Energy(ev) Occupation Kpoint = 1
33
33
5 9.41058 0
34
34
```
35
35
36
-
## *STRU_SIMPLE.cif*
36
+
## *STRU.cif*
37
37
38
-
ABACUS generates a `.cif` format structure file based on the input file `STRU`, facilitating users to visualize with commonly used software.`STRU_READIN_ADJUST.cif` is the structure after considering symmetry.
38
+
ABACUS generates a `.cif` format structure file based on the input file `STRU`, facilitating users to visualize with commonly used software.
0 commit comments