Skip to content

Commit e6b1023

Browse files
committed
Merge branch 'develop' of github.com:deepmodeling/abacus-develop into develop
2 parents ba97bd5 + 257e50a commit e6b1023

Some content is hidden

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

72 files changed

+18798
-3547
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ target_link_libraries(${ABACUS_BIN_NAME}
263263
cell
264264
symmetry
265265
md
266+
surchem
266267
neighbor
267268
orb
268269
io

README.md

Lines changed: 50 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<p align="center">
2-
<img src="doc/abacus-logo.jpg">
2+
<img src="docs/abacus-logo.jpg">
33
</p>
44

55
<p align="center">
@@ -13,12 +13,11 @@
1313

1414
<a id="readme-top"></a>
1515

16-
WELCOME TO THE "ABACUS" PROGRAM!
17-
THE PROJECT STARTS FROM https://github.com/abacusmodeling/abacus-develop,
18-
WHERE MORE INFORMATION CAN BE FOUND.
19-
16+
ABACUS is an electronic structure package based on density functional theory(DFT), adopting either plane wave basis or numerical atomic orbitals.
17+
Please refer to our [GitHub repository](https://github.com/deepmodeling/abacus-develop) for more information and support.
2018
# Table of contents
21-
- [About ABACUS](#about-abacus)
19+
20+
- [Features](#features)
2221
- [Download and install](#download-and-install)
2322
- [Quickstart guide](#quickstart-guide)
2423
- [Input files](#input-files)
@@ -28,12 +27,7 @@ WHERE MORE INFORMATION CAN BE FOUND.
2827
- [Examples](#examples)
2928
- [For developers](#for-developers)
3029

31-
32-
# About ABACUS
33-
ABACUS IS AN ELECTRONIC STRUCTURE PACKAGE BASED ON DENSITY FUNCTIONAL THEORY.
34-
ABACUS ADOPTS EITHER PLANE WAVE BASIS OR NUMERICAL ATOMIC ORBITALS.
35-
36-
---
30+
# Features
3731

3832
ABACUS provides the following features and functionalities:
3933

@@ -55,20 +49,22 @@ ABACUS provides the following features and functionalities:
5549
[back to top](#readme-top)
5650

5751
# Download and install
58-
ABACUS can be downloaded from its [official website](http://abacus.ustc.edu.cn/) or our [github website](https://github.com/deepmodeling/abacus-develop.git).
5952

60-
Please refer to the [installation guide](doc/install.md) for instruction on the structure of the package and how to install ABACUS.
53+
ABACUS can be downloaded from our [official website](http://abacus.ustc.edu.cn/) or [GitHub release page](https://github.com/deepmodeling/abacus-develop/releases) for stable versions. You can also get the developing version from our [GitHub repository](https://github.com/deepmodeling/abacus-develop).
54+
55+
Please refer to the [installation guide](docs/install.md) for instruction on the structure of the package and how to install ABACUS.
6156

6257
[back to top](#readme-top)
6358

6459
# Quickstart guide
6560

6661
## Input files
67-
The following files are the central input files for ABACUS. Before executing the program, please
68-
make sure these files are prepared and stored in the working directory.
62+
63+
The following files are the central input files for ABACUS. Before executing the program, please make sure these files are prepared and stored in the working directory.
64+
6965
- The INPUT file
7066

71-
The file named INPUT contains the setting parameters used in the calculation, which informs the program “what to do and how to do it”. Most parameters are supplied with default values, but some important parameters must be explicitly set by the user. For a complete list of the input parameters, please consult this [instruction](doc/input-main.md).
67+
The file named INPUT contains the setting parameters used in the calculation, which informs the program “what to do and how to do it”. Most parameters are supplied with default values, but some important parameters must be explicitly set by the user. For a complete list of the input parameters, please consult this [instruction](docs/input-main.md).
7268

7369
*Attention: Users cannot change the filename “INPUT” to other names.*
7470
- The structure file
@@ -77,32 +73,33 @@ make sure these files are prepared and stored in the working directory.
7773

7874
The STRU file contains the structural information about the system, e.g., lattice constant, lattice vectors, and positions of the atoms within a unit cell. The positions can be given either in direct or Cartesian coordinates. Moreover, the name (and location of the pseudopotential and numerical orbital files, see below) need to be specified in the STRU file.
7975

80-
Specifications of the STRU file can be found in this [short instruction](doc/input-stru.md).
76+
Specifications of the STRU file can be found in this [short instruction](docs/input-stru.md).
8177
- The k-point file
8278

8379
The default name is KPT. It contains the information of the k-grid setting for the Brillouin zone sampling.
8480

85-
Specification of the k-point file can be found in this [short instruction](doc/input-kpt.md).
81+
Specification of the k-point file can be found in this [short instruction](docs/input-kpt.md).
8682
- The pseudopotential files
8783

8884
Norm-conserving pseudopotentials are used in ABACUS, in the UPF file format.The filename of each element’s pseudopotential needs to be specified in the `STRU` file, if the the pseudopotential files are already present in the working directory. However, in case that the pseudopotential files are stored in some other directories, then a full path to access the pseudopotential files have to be specified in the `STRU` file.
8985

90-
More information on pseudopotentials is given [here](doc/features.md#pseudopotentials).
86+
More information on pseudopotentials is given [here](docs/features.md#pseudopotentials).
9187

9288
- The numerical orbital files
9389

9490
When performing calculations with numerical atomic orbital basis, it is necessary to prepare a numerical orbital file for each element in the system. Generally, the numerical orbital file should be prepared by the user, which will be described later. The filename for each element’s numerical orbital basis needs to be specified in the `STRU` file. However, in case that the numerical orbital files are stored in a location different from the working directory, then a full path to access the orbital files have to be specified in the `STRU` file.
95-
ABACUS provides numerical atomic basis sets of different accuracy levels for most elements commonly used. Users can download these basis sets from the [website](http://abacus.ustc.edu.cn/pseudo.html). Moreover, users can generate numerical atomic orbitals by themselves, and the procedure is provided in this [short introduction](doc/generate-basis.md).
91+
ABACUS provides numerical atomic basis sets of different accuracy levels for most elements commonly used. Users can download these basis sets from the [website](http://abacus.ustc.edu.cn/pseudo.html). Moreover, users can generate numerical atomic orbitals by themselves, and the procedure is provided in this [short introduction](docs/generate-basis.md).
9692

9793
[back to top](#readme-top)
9894

9995
## Output files
10096

10197
When the calculation finishes, the program will create an output directory (default: OUT.ABACUS/),
10298
into which the following output files will be generated:
99+
103100
1. `INPUT`: contains all input parameters, user’s input and default.
104101
2. `istate.info`: information of energy eigenvalues.
105-
3. `running_${calculation}.log`: contains the running details. Information on the variable calculation is found in the [list of keywords](doc/input-main.md#calculation). For example, if we are doing a SCF calculation, the log files will be named running_scf.log.
102+
3. `running_${calculation}.log`: contains the running details. Information on the variable calculation is found in the [list of keywords](docs/input-main.md#calculation). For example, if we are doing a SCF calculation, the log files will be named running_scf.log.
106103
4. `STRU_READIN_ADJUST.cif`: structure file in the cif formatter.
107104
5. `warning.log`: errors and warning messages.
108105
6. directories containing element information. For example, Si/:
@@ -115,56 +112,56 @@ into which the following output files will be generated:
115112

116113
# Features
117114

118-
Users can refer to this [page](doc/features.md) for several features of the ABACUS code:
115+
Users can refer to this [page](docs/features.md) for several features of the ABACUS code:
119116

120-
- [Basis sets](doc/features.md#basis-sets)
121-
- [Pseudopotentials](doc/features.md#pseudopotentials)
122-
- [Boundary conditions and k-points](doc/features.md#boundary-conditions-and-k-points)
123-
- [Kohn-Sham solver](doc/features.md#kohn-sham-solver)
124-
- [Exchange-correlation functionals](doc/features.md#exchange-correlation-functionals)
117+
- [Basis sets](docs/features.md#basis-sets)
118+
- [Pseudopotentials](docs/features.md#pseudopotentials)
119+
- [Boundary conditions and k-points](docs/features.md#boundary-conditions-and-k-points)
120+
- [Kohn-Sham solver](docs/features.md#kohn-sham-solver)
121+
- [Exchange-correlation functionals](docs/features.md#exchange-correlation-functionals)
125122

126123
[back to top](#readme-top)
127124

128125
# Functionalities
126+
129127
ABACUS provides a wide variety of functionalities, with explanation and examples:
130128

131-
- [Basic electronic structure calculation with PW basis set](doc/examples/basic-pw.md)
132-
- [Basic electronic structure calculation with LCAO basis set](doc/examples/basic-lcao.md)
133-
- [DFT + dispersion calculations](doc/examples/dispersion.md)
134-
- [DOS, wave functions](doc/examples/dos.md)
135-
- [Band structure](doc/examples/band-struc.md)
136-
- [Magnetic properties](doc/examples/magnetic.md)
137-
- [Force calculation and structure relaxation](doc/examples/force.md)
138-
- [Stress calculation and cell relaxation](doc/examples/stress.md)
139-
- [Molecular dynamics](doc/examples/md.md)
140-
- [Macroscopic polarization calculation](doc/examples/berry-phase.md)
141-
- [ABACUS-wannier90 interface](doc/examples/wannier90.md)
142-
- [Real-time time dependent density functional theory](doc/examples/tddft.md)
143-
- [Electrostatic potential](doc/examples/potential.md)
144-
- [Mulliken charge](doc/examples/mulliken.md)
145-
- [Hybrid functional](doc/examples/hybrid.md)
129+
- [Basic electronic structure calculation with PW basis set](docs/examples/basic-pw.md)
130+
- [Basic electronic structure calculation with LCAO basis set](docs/examples/basic-lcao.md)
131+
- [DFT + dispersion calculations](docs/examples/dispersion.md)
132+
- [DOS, wave functions](docs/examples/dos.md)
133+
- [Band structure](docs/examples/band-struc.md)
134+
- [Magnetic properties](docs/examples/magnetic.md)
135+
- [Force calculation and structure relaxation](docs/examples/force.md)
136+
- [Stress calculation and cell relaxation](docs/examples/stress.md)
137+
- [Molecular dynamics](docs/examples/md.md)
138+
- [Macroscopic polarization calculation](docs/examples/berry-phase.md)
139+
- [ABACUS-wannier90 interface](docs/examples/wannier90.md)
140+
- [Real-time time dependent density functional theory](docs/examples/tddft.md)
141+
- [Electrostatic potential](docs/examples/potential.md)
142+
- [Mulliken charge](docs/examples/mulliken.md)
143+
- [Hybrid functional](docs/examples/hybrid.md)
146144

147145
[back to top](#readme-top)
148146

149147
# Examples
148+
150149
We also provide many examples in the directories examples/ and tests/.
151150

152151
Note that the examples there are intended as references, and the results are not converged with regard to basis set or k point sampling.
153152

154-
In the directory tests/, each sub-directory contains a separate test example. An introduction of the examples in tests/ directory can be found [here](tests/README.md). In each subdirectory, you may also find a file named jd which contains a short job description, and for some cases you may also find a README file containing more details about the run. Also, reference output is provided in the file result.ref.
153+
In the directory tests/, each sub-directory contains a separate test example. An introduction of the examples in tests/ directory can be found [here](tests/README.md). In each subdirectory, you may also find a file named jd which contains a short job description, and for some cases you may also find a README file containing more details about the run. Also, reference output is provided in the file `result.ref`.
155154

156155
[back to top](#readme-top)
157156

158157
# For developers
159158

160-
We also provide some [information](doc/developers.md) for developers.
161-
- [Raising issues on GitHub](doc/developers.md#raising-issues-on-github)
162-
- [Modularization and module tests](doc/developers.md#modularization-and-module-tests)
163-
- [Contributing to ABACUS](doc/developers.md#contributing-to-abacus)
164-
- [Making pull requests](doc/developers.md#making-pull-requests)
165-
- [Providing unit tests](doc/developers.md#providing-unit-tests)
166-
- [Upating documentation](doc/developers.md#updating-documentation)
167-
- [Macros](doc/developers.md#macros)
168-
- [Comment style for documentation](doc/developers.md#comment-style-for-documentation)
159+
We also provide some [information](docs/CONTRIBUTING.md) on how to make contributions to ABACUS.
169160

161+
- [Structure of the package](docs/CONTRIBUTING.md#structure-of-the-package)
162+
- [Submitting an Issue](docs/CONTRIBUTING.md#submitting-an-issue)
163+
- [Comment Style for documentation](docs/CONTRIBUTING.md#comment-style-for-documentation)
164+
- [Code formatting style](docs/CONTRIBUTING.md#code-formatting-style)
165+
- [Submitting a Pull Request](docs/CONTRIBUTING.md#submitting-a-pull-request)
166+
- [Commit Message Guidelines](docs/CONTRIBUTING.md#commit-message-guidelines)
170167
[back to top](#readme-top)

docs/features.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ vectors of the supercell are set in the STRU file.
6363

6464
For the input k-point (KPT) file, the file should either contain the k-point coordinates and weights or the mesh size for creating the k-point gird. Both options are allowed in ABACUS.
6565

66-
More information on k-points is provided in this [instruction](#doc/input-kpt.md)
66+
More information on k-points is provided in this [instruction](#docs/input-kpt.md)
6767

6868
[back to top](#features)
6969

docs/input-main.md

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -210,40 +210,33 @@ This part of variables are used to control general system parameters.
210210
#### dft_functional
211211

212212
- **Type**: String
213-
- **Description**: In our package, the XC functional can either be set explicitly using the dft_functional keyword as explained below, or set implicitly according to the XC functional information read from pseudopotential file. The user should ensure that the XC functional set in the INPUT file and the pseudopotential file are consistent. If more than one element is present in the system, make sure all of pseudopotentials have the same XC functional. **Currently only LDA and GGA are supported.**
214-
215-
To be specific, we briefly explain the format of the pseudopotential file and the key information it contains. There are a few lines in Si`s GGA pseudopotential file Si_ONCV_PBE-1.0.upf:
216-
217-
```
218-
...
219-
<PP_HEADER
220-
generated="Generated using ONCVPSP code by D. R. Hamann"
221-
author="Martin Schlipf and Francois Gygi"
222-
date="150105"
223-
comment=""
224-
element="Si"
225-
pseudo_type="NC"
226-
relativistic="scalar"
227-
is_ultrasoft="F"
228-
is_paw="F"
229-
is_coulomb="F"
230-
has_so="F"
231-
has_wfc="F"
232-
has_gipaw="F"
233-
core_correction="F"
234-
functional="PBE"
235-
z_valence=" 4.00"
236-
total_psenergy=" -3.74274958433E+00"
237-
rho_cutoff=" 6.01000000000E+00"
238-
```
239-
240-
Possible values of this variable are:
241-
- none: the functional is specified implicity by the input pseudopotential file
242-
- lda: Perdew-Zunger local density approximation
243-
- pbe: Perdew-Burke-Ernzerhof general gradient approximation
244-
245-
If the functional specified by the user is not consistent with the pseudopotential file, the program will stop with an error message.
246-
- **Default**: none
213+
- **Description**: type of exchange-correlation functional used in calculation. If dft_functional is not set, the program will adopt the functional used to generate pseudopotential files, provided all of them are generated using the same functional. For example, we present a few lines in Si’s GGA pseudopotential file Si_ONCV_PBE-1.0.upf:
214+
```
215+
...
216+
<PP_HEADER
217+
generated="Generated using ONCVPSP code by D. R. Hamann"
218+
author="Martin Schlipf and Francois Gygi"
219+
date="150105"
220+
comment=""
221+
element="Si"
222+
pseudo_type="NC"
223+
relativistic="scalar"
224+
is_ultrasoft="F"
225+
is_paw="F"
226+
is_coulomb="F"
227+
has_so="F"
228+
has_wfc="F"
229+
has_gipaw="F"
230+
core_correction="F"
231+
functional="PBE"
232+
z_valence=" 4.00"
233+
total_psenergy=" -3.74274958433E+00"
234+
rho_cutoff=" 6.01000000000E+00"
235+
```
236+
According to the information above, this pseudopotential is generated using PBE functional.
237+
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 [source code](../source/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 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**.
238+
We also provides (under test) two hybrid functionals: PBE0 and HSE. For more information about hybrid functionals, refer to the [section](#exact-exchange) on its input variables.
239+
- **Default**: same as UPF file.
247240

248241
#### pseudo_type
249242

@@ -975,6 +968,8 @@ This part of variables are used to control the molecular dynamics calculations.
975968
- 2: NVT ensemble with Langevin method;
976969
- 3: NVT ensemble with Anderson thermostat;
977970
- 4: MSST method;
971+
972+
***Note: when md_type is set to 1, md_tfreq is required to stablize temperature. It is an empirical parameter whose value is system-dependent, ranging from 1/(40\*md_dt) to 1/(100\*md_dt). An improper choice of its value might lead to failure of job.***
978973
- **Default**: 1
979974
980975
#### md_nstep
@@ -1028,9 +1023,11 @@ This part of variables are used to control the molecular dynamics calculations.
10281023
10291024
- **Type**: Real
10301025
- **Description**:
1031-
- Oscillation frequency, used to determine Qmass of NHC;
1032-
- 1/(md_tfreq*md_dt) is collision probability in Anderson method.
1033-
- **Default**: 1.0
1026+
- When md_type = 1, md_tfreq controls the frequency of the temperature oscillations during the simulation. If it is too large, the
1027+
temperature will fluctuate violently; if it is too small, the temperature will take a very long time to equilibrate with the atomic system.
1028+
- When md_type = 3, md_tfreq*md_dt is the collision probability in Anderson method.
1029+
- If md_tfreq is not set in INPUT, md_tfreq will be autoset to be 1/40/md_dt.
1030+
- **Default**: 1/40/md_dt
10341031
10351032
#### md_mnhc
10361033

examples/hse-Si-example/INPUT

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ smearing_method smearing_method
1313
mixing_type pulay
1414

1515
dft_functional hse
16-
exx_separate_loop 0
17-
exx_pca_threshold 1E-3
18-
exx_ccp_rmesh_times 10
19-
exx_c_threshold 1E-4
20-
exx_dm_threshold 1E-3
21-
exx_schwarz_threshold 1E-4
22-
exx_cauchy_threshold 1E-6
23-
16+
exx_separate_loop 1
17+
exx_pca_threshold 1e-4
18+
exx_c_threshold 1e-4
19+
exx_dm_threshold 1e-4
20+
exx_schwarz_threshold 1e-5
21+
exx_cauchy_threshold 1e-7
22+
exx_ccp_rmesh_times 10

source/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ add_subdirectory(module_hamilt)
88
add_subdirectory(module_hsolver)
99
add_subdirectory(module_orbital)
1010
add_subdirectory(module_md)
11+
add_subdirectory(module_surchem)
1112
add_subdirectory(module_deepks)
1213
add_subdirectory(module_xc)
1314
add_subdirectory(module_esolver)

0 commit comments

Comments
 (0)