Skip to content

Commit 098b617

Browse files
authored
Merge pull request #565 from dyzheng/develop
Merge ABACUS_2.2.0_beta to Develop branch
2 parents 4e0b527 + 985b853 commit 098b617

File tree

531 files changed

+12706
-22188
lines changed

Some content is hidden

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

531 files changed

+12706
-22188
lines changed

doc/generate-basis.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
In ABACUS, the atomic orbital bases are generated using a scheme developed in the [paper](https://iopscience.iop.org/article/10.1088/0953-8984/22/44/445501). We provide a script named “generate_orbital.sh” under the directory tools/ to generate the atomic orbitals bases. In order to run this script, an ORBITAL_INPUT file is required.
66

7-
An example of this ORBITAL_INPUT file can be found in $ABACUS/tools/SIAB/2_Generate:
7+
An example of this ORBITAL_INPUT file can be found in $ABACUS/tools/SIAB/SimulatedAnnealing/example_N:
88
```
99
#1.exe_dir
1010
#----------------------------------------------------------------------------
@@ -101,7 +101,7 @@ The ORBITAL_INPUT file contains 5 parts :
101101
This part gives the bond lengths of the reference systems (dimer or trimer). Generally, the bond lengths are chosen to distribute on both sides of the equilibrium value. For example, for N dimer we use (in Å):
102102
- Dis 1.0 1.1 1.5 2.0 3.0
103103
104-
It means we take 5 reference systems (dimer), and the bond lengths are 1.0 1.1 1.5 2.0 3.0 angstrom, respectively. Every element has reference systems with different bond lengths, which could be found in file $ABACUS/tools/SIAB/2_Generate/DIS.txt.
104+
It means we take 5 reference systems (dimer), and the bond lengths are 1.0 1.1 1.5 2.0 3.0 angstrom, respectively. Every element has reference systems with different bond lengths, which could be found in file $ABACUS/tools/SIAB/DIS.txt.
105105
4. orbital generation
106106
107107
The main parameters for orbital generation
@@ -142,7 +142,7 @@ The ORBITAL_INPUT file contains 5 parts :
142142
143143
the accept rise of spillage when optimizing the kinetic energy
144144
145-
After preparing the ORBITAL_INPUT file, one just needs to run the script and wait for the results. The results will be written into several output files under the directory $element.id_element/$Rcut/, for example 07_N/6/.
145+
After preparing the ORBITAL_INPUT file, one just needs to run the script "$PATH_TO/generate_orbital.sh ORBITAL_INPUT" and wait for the results. The results will be written into several output files under the directory $element.id_element/$Rcut/, for example 07_N/6/.
146146
147147
Some output files listed here are useful.
148148
- ORBITAL_RESULTS.txt
@@ -160,4 +160,4 @@ For some elements, you can download the reference ORBITAL_INPUT files and pseudo
160160
A file README is also given and you can decide the parameters with it as a reference.
161161
In most cases, you just need to modify the parameters in Section 1, 2. Section 4 may be
162162
partially modified if you need higher precision orbitals. The users are not encouraged to change
163-
the settings in sections 5, unless you are very familiar with the code generating algorithms.
163+
the settings in sections 5, unless you are very familiar with the code generating algorithms.

doc/input-main.md

Lines changed: 132 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919

2020
- [Electronic structure](#electronic-structure)
2121

22-
[basis_type](#basis-type) | [ks_solver](#ks-solver) | [nbands](#nbands) | [nbands_istate](#nbands-istate) | [nspin](#nspin) | [occupations](#occupations) | [smearing](#smearing) | [sigma](#sigma) | [mixing_type](#mixing-type) | [mixing_beta](#mixing-beta) | [mixing_ndim](#mixing-ndim) | [mixing_gg0](#mixing-gg0) | [gamma_only](#gamma-only) | [printe](#printe) | [niter](#niter) | [dr2](#dr2) | [charge_extrap](#charge-extrap)
22+
[basis_type](#basis-type) | [ks_solver](#ks-solver) | [nbands](#nbands) | [nbands_istate](#nbands-istate) | [nspin](#nspin) | [occupations](#occupations) | [smearing](#smearing) | [sigma](#sigma) | [mixing_type](#mixing-type) | [mixing_beta](#mixing-beta) | [mixing_ndim](#mixing-ndim) | [mixing_gg0](#mixing-gg0) | [gamma_only](#gamma-only) | [printe](#printe) | [niter](#niter) | [dr2](#dr2) | [charge_extrap](#charge-extrap) | [ocp](#ocp) | [ocp_set](#ocp_set)
2323

2424
- [Geometry relaxation](#geometry-relaxation)
2525

26-
[nstep](#nstep) | [force](#force) | [force_thr](#force-thr) | [force_thr_ev](#force-thr-ev) | [force_set](#force-set) | [bfgs_w1](#bfgs-w1) | [bfgs_w2](#bfgs-w2) | [trust_radius_max](#trust-radius-max) | [trust_radius_min](#trust-radius-min) | [trust_radius_ini](#trust-radius-ini) | [stress](#stress) | [stress_thr](#stress-thr) | [press](#press) | [fixed_axes](#fixed-axes) | [move_method](#move-method) | [cg_threshold](#cg-threshold) | [cell_factor](#cell-factor)
26+
[nstep](#nstep) | [force](#force) | [force_thr](#force-thr) | [force_thr_ev](#force-thr-ev) | [force_set](#force-set) | [bfgs_w1](#bfgs-w1) | [bfgs_w2](#bfgs-w2) | [trust_radius_max](#trust-radius-max) | [trust_radius_min](#trust-radius-min) | [trust_radius_ini](#trust-radius-ini) | [stress](#stress) | [stress_thr](#stress-thr) | [press1, press2, press3](#press) | [fixed_axes](#fixed-axes) | [move_method](#move-method) | [cg_threshold](#cg-threshold) | [cell_factor](#cell-factor)
2727

2828
- [Variables related to program output](#variables-related-to-program-output)
2929

30-
[mulliken](#mulliken) | [out_charge](#out-charge) | [out_potential](#out-potential) | [out_dm](#out-dm) | [out_wf](#out-wf) | [out_lowf](#out-lowf) | [out_dos](#out-dos) | [out_band](#out-band) | [out_stru](#out-stru) | [out_level](#out_level) | [out_alllog](#out-alllog) | [out_hs](#out-hs) | [out_r](#out-r) | [out_hs2](#out-hs2)
30+
[mulliken](#mulliken) | [out_charge](#out-charge) | [out_potential](#out-potential) | [out_dm](#out-dm) | [out_wf](#out-wf) | [out_lowf](#out-lowf) | [out_dos](#out-dos) | [out_band](#out-band) | [out_stru](#out-stru) | [out_level](#out_level) | [out_alllog](#out-alllog) | [out_hs](#out-hs) | [out_r](#out-r) | [out_hs2](#out-hs2) | [out_element_info](#out-element-info) | [restart_save](#restart_save) | [restart_load](#restart_load)
3131

3232
- [Density of states](#density-of-states)
3333

@@ -47,13 +47,19 @@
4747

4848
- [DFT+U correction](#DFT_U-correction)
4949

50+
[dft_plus_u](#dft_plus_u) | [orbital_corr](#orbital_corr) | [hubbard_u](#hubbard_u) | [hund_j](#hund_j) | [yukawa_potential](#yukawa_potential) | [omc](#omc)
51+
5052
- [VdW correction](#vdw-correction)
5153

5254
[vdw_method](#vdw-method) | [vdw_s6](#vdw-s6) | [vdw_s8](#vdw-s8) | [vdw_a1](#vdw-a1) | [vdw_a2](#vdw-a2) | [vdw_d](#vdw-d) | [vdw_abc](#vdw-abc) | [vdw_C6_file](#vdw-C6-file) | [vdw_C6_unit](#vdw-C6-unit) | [vdw_R0_file](#vdw-R0-file) | [vdw_R0_unit](#vdw-R0-unit) | [vdw_model](#vdw-model) | [vdw_radius](#vdw-radius) | [vdw_radius_unit](#vdw-radius-unit) | [vdw_cn_radius](#vdw-cn-radius) | [vdw_cn_radius_unit](#vdw-cn-radius-unit) | [vdw_period](#vdw-period)
5355

5456
- [Berry phase and wannier90 interface](#berry-phase-and-wannier90-interface)
5557

56-
[berry_phase](#berry-phase) | [gdir](#gdir) | [towannier90](#towannier90) | [nnkpfile](#nnkpfile) | [wannier_spin](#wannier-spin) | [tddft](#tddft) [vext](#vext) | [vext_dire](#vext-dire)
58+
[berry_phase](#berry-phase) | [gdir](#gdir) | [towannier90](#towannier90) | [nnkpfile](#nnkpfile) | [wannier_spin](#wannier-spin)
59+
60+
- [TDDFT: time dependent density functional theory](#TDDFT-doc)
61+
62+
[tddft](#tddft) | [td_dr2](#td_dr2) | [td_dt](#td_dt) | [td_force_dt](#td_force_dt) | [td_vext](#td_vext) | [td_vext_dire](#td_vext_dire) | [td_timescale](#td_timescale) | [td_vexttype](#td_vexttype) | [td_vextout](#td_vextout) | [td_dipoleout](#td_dipoleout)
5763

5864
- [Variables useful for debugging](#variables-useful-for-debugging)
5965

@@ -292,7 +298,7 @@ This part of variables are used to control general system parameters.
292298
293299
- diago_proc<a id="diago_proc"></a>
294300
- *Type*: Integer
295-
- *Descrption*: If set to a positive number, then it specifies the number of threads used for carrying out diagonalization. Must be less than or equal to total number of MPI threads. Also, when cg diagonalization is used, diago_proc must be same as total number of MPI threads. If set to 0, then it will be set to the number of MPI threads. Normally, it is fine just leaving it to default value.
301+
- *Descrption*: If set to a positive number, then it specifies the number of threads used for carrying out diagonalization. Must be less than or equal to total number of MPI threads. Also, when cg diagonalization is used, diago_proc must be same as total number of MPI threads. If set to 0, then it will be set to the number of MPI threads. Normally, it is fine just leaving it to default value. Only used for pw base.
296302
- *Default*: 0
297303
298304
[back to top](#input-file)
@@ -605,6 +611,22 @@ calculations.
605611
606612
[back to top](#input-file)
607613
614+
615+
- ocp<a id="ocp"></a>
616+
- *Type*: Boolean
617+
- *Description*: option for choose whether calcualting constrained DFT or not.
618+
Only used for TDDFT.
619+
- *Default*:0
620+
621+
[back to top](#input-file)
622+
623+
- ocp_set<a id="ocp_set"></a>
624+
- *Type*: string
625+
- *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.
626+
- *Default*:none
627+
628+
[back to top](#input-file)
629+
608630
### Geometry relaxation
609631
This part of variables are used to control the geometry relaxation.
610632
@@ -687,11 +709,11 @@ This part of variables are used to control the geometry relaxation.
687709
- stress_thr<a id="stress-thr"></a>
688710
- *Type*: Real
689711
- *Description*: The threshold of the stress convergence, it indicates the largest stress among all the directions, the unit is KBar,
690-
- *Default*: 10
712+
- *Default*: 0.01
691713
692714
[back to top](#input-file)
693715
694-
- press1, 2, 3<a id="press"></a>
716+
- press1, press2, press3<a id="press"></a>
695717
- *Type*: Real
696718
- *Description*: the external pressures along three axes,the compressive stress is taken to be positive, the unit is KBar.
697719
- *Default*: 0
@@ -831,6 +853,41 @@ This part of variables are used to control the output of properties.
831853
832854
[back to top](#input-file)
833855
856+
- out_element_info<a id="out-element-info"></a>
857+
- *Type*: Boolean
858+
- *Description*: When set to 1, ABACUS will generate a new directory under OUT.suffix path named as element name such as 'Si', which contained files "Si-d1-orbital-dru.dat Si-p2-orbital-k.dat Si-s2-orbital-dru.dat
859+
Si-d1-orbital-k.dat Si-p2-orbital-r.dat Si-s2-orbital-k.dat
860+
Si-d1-orbital-r.dat Si-p2-orbital-ru.dat Si-s2-orbital-r.dat
861+
Si-d1-orbital-ru.dat Si-p-proj-k.dat Si-s2-orbital-ru.dat
862+
Si.NONLOCAL Si-p-proj-r.dat Si-s-proj-k.dat
863+
Si-p1-orbital-dru.dat Si-p-proj-ru.dat Si-s-proj-r.dat
864+
Si-p1-orbital-k.dat Si-s1-orbital-dru.dat Si-s-proj-ru.dat
865+
Si-p1-orbital-r.dat Si-s1-orbital-k.dat v_loc_g.dat
866+
Si-p1-orbital-ru.dat Si-s1-orbital-r.dat
867+
Si-p2-orbital-dru.dat Si-s1-orbital-ru.dat " for example.
868+
869+
- *Default*: 0
870+
871+
[back to top](#input-file)
872+
873+
- restart_save<a id="restart_save"></a>
874+
- *Type*: Boolean
875+
- *Description*: Only for LCAO, store charge density file and H matrix file every scf step for restart.
876+
- *Default*: 0
877+
878+
[back to top](#input-file)
879+
880+
- restart_load<a id="restart_load"></a>
881+
- *Type*: Boolean
882+
- *Description*: Only for LCAO, used for restart, only if that:
883+
* set restart_save as true and do scf calculation before.
884+
* please ensure suffix is same with calculation before and density file and H matrix file is exist.
885+
886+
restart from stored density file and H matrix file.
887+
- *Default*: 0
888+
889+
[back to top](#input-file)
890+
834891
### Density of states
835892
This part of variables are used to control the calculation of DOS.
836893
@@ -859,7 +916,7 @@ This part of variables are used to control the calculation of DOS.
859916
This part of variables are used to control the addition of an external electric field. It is achieved by adding a saw-like potential to the local ionic potential.
860917
861918
- efield<a id="efield"></a>
862-
- *Type*: Bool
919+
- *Type*: Boolean
863920
- *Description*: Controls whether to add the external electric field. When set to 1, the electric field is turned on. When set to 0, there is no electric field.
864921
- *Default*: 0.
865922
@@ -895,9 +952,10 @@ This part of variables are used to control the addition of an external electric
895952
896953
### DeePKS
897954
This part of variables are used to control the usage of DeePKS method (a comprehensive data-driven approach to improve accuracy of DFT).
955+
Warning: this function is not robust enough for version 2.2.0. Please try these variables in https://github.com/deepmodeling/abacus-develop/tree/deepks .
898956
899957
- out_descriptor<a id="out-descriptor"></a>
900-
- *Type*: Bool
958+
- *Type*: Boolean
901959
- *Description*: when set to 1, ABACUS will calculate and output descriptor for DeePKS training. In `LCAO` calculation, a path of *.orb file is needed to be specified under `NUMERICAL_DESCRIPTOR`in `STRU`file. For example:
902960
```
903961
NUMERICAL_ORBITAL
@@ -917,7 +975,7 @@ This part of variables are used to control the usage of DeePKS method (a compreh
917975
918976
[back to top](#input-file)
919977
- deepks_scf<a id="deepks-scf"></a>
920-
- *Type*: Bool
978+
- *Type*: Boolean
921979
- *Description*: only when deepks is enabled in `LCAO` calculation can this variable set to 1. Then, a trained, traced model file is needed for self-consistant field iteration in DeePKS method.
922980
- *Default*: 0
923981
@@ -1071,7 +1129,7 @@ This part of variables are used to control the molecular dynamics calculations.
10711129
[back to top](#input-file)
10721130
10731131
- md_rstmd<a id="md-rstmd"></a>
1074-
- *Type*: Bool
1132+
- *Type*: Boolean
10751133
- *Description*: to control whether restart md.
10761134
- 0:When set to 0, ABACUS will calculate md normolly.
10771135
- 1:When set to 1, ABACUS will calculate md from last step in your test before.
@@ -1116,7 +1174,7 @@ This part of variables are used to control the molecular dynamics calculations.
11161174
- NVT_control<a id="nvt-control"></a>
11171175
- *Type*: Integer
11181176
- *Description*: Specifies which type of thermostat is used.
1119-
- 1: Nose-Hoover
1177+
- 1: Nose-Hoover-chains
11201178
- 2: Langevin
11211179
- 3: Andersen
11221180
- *Default*: 1
@@ -1174,43 +1232,43 @@ This part of variables are used to control the molecular dynamics calculations.
11741232
11751233
### DFT+U correction
11761234
This part of variables are used to control DFT+U correlated parameters
1177-
- dft_plus_u
1178-
- *Type*: Bool
1235+
- dft_plus_u<a id="dft_plus_u"></a>
1236+
- *Type*: Boolean
11791237
- *Description*: If set to 1, ABCUS will calculate plus U correction, which is especially important for correlated electron.
11801238
- *Default*: 0
11811239
11821240
[back to top](#input-file)
11831241
1184-
- orbital_corr
1242+
- orbital_corr<a id="orbital_corr"></a>
11851243
- *Type*: Int
11861244
- *Description*: $l_1,l_2,l_3,\ldots$ for atom type 1,2,3 respectively.(usually 2 for d electrons and 3 for f electrons) .Specify which orbits need plus U correction for each atom. If set to -1, the correction would not be calculate for this atom.
11871245
- *Default*: None
11881246
11891247
[back to top](#input-file)
11901248
1191-
- hubbard_u
1249+
- hubbard_u<a id="hubbard_u"></a>
11921250
- *Type*: Real
11931251
- *Description*: Hubbard Coulomb interaction parameter U(ev) in plus U correction,which should be specified for each atom unless Yukawa potential is use. ABACUS use a simplified scheme which only need U and J for each atom.
11941252
- *Default*: 0.0
11951253
11961254
[back to top](#input-file)
11971255
1198-
- hund_j
1256+
- hund_j<a id="hund_j"></a>
11991257
- *Type*: Real
12001258
- *Description*: Hund exchange parameter J(ev) in plus U correction ,which should be specified for each atom unless Yukawa potential is use. ABACUS use a simplified scheme which only need U and J for each atom.
12011259
- *Default*: 0.0
12021260
12031261
[back to top](#input-file)
12041262
1205-
- yukawa_potential
1206-
- *Type*: Bool
1263+
- yukawa_potential<a id="yukawa_potential"></a>
1264+
- *Type*: Boolean
12071265
- *Description*: whether use the local screen Coulomb potential method to calculate the value of U and J. If this is set to 1, hubbard_u and hund_j do not need to be specified.
12081266
- *Default*: 0
12091267
12101268
[back to top](#input-file)
12111269
1212-
- omc
1213-
- *Type*: Bool
1270+
- omc<a id="omc"></a>
1271+
- *Type*: Boolean
12141272
- *Description*: whether turn on occupation matrix control method or not
12151273
- *Default*: 0
12161274
@@ -1361,6 +1419,8 @@ This part of variables are used to control berry phase and wannier90 interfacae
13611419
- *Default*: up
13621420
13631421
[back to top](#input-file)
1422+
1423+
### TDDFT: time dependent density functional theory
13641424
- tddft<a id="tddft"></a>
13651425
- *Type*: Integer
13661426
- *Description*:
@@ -1369,22 +1429,71 @@ This part of variables are used to control berry phase and wannier90 interfacae
13691429
- *Default*: 0
13701430
13711431
[back to top](#input-file)
1372-
- vext<a id="vext"></a>
1432+
- td_dr2<a id="td_dr2"></a>
1433+
- *Type*: Double
1434+
- *Description*: Accuracy of electron convergence when doing time-dependent evolution.
1435+
- *Default*: 1e-9
1436+
1437+
[back to top](#input-file)
1438+
- td_dt<a id="td_dt"></a>
1439+
- *Type*: Double
1440+
- *Description*: Time-dependent evolution time step. (fs)
1441+
- *Default*: 0.02
1442+
1443+
[back to top](#input-file)
1444+
- td_force_dt<a id="td_force_dt"></a>
1445+
- *Type*: Double
1446+
- *Description*: Time-dependent evolution force changes time step. (fs)
1447+
- *Default*: 0.02
1448+
1449+
[back to top](#input-file)
1450+
- td_vext<a id="td_vext"></a>
13731451
- *Type*: Integer
13741452
- *Description*:
13751453
- 1: add a laser material interaction (extern laser field).
13761454
- 0: no extern laser field.
13771455
- *Default*: 0
13781456
13791457
[back to top](#input-file)
1380-
- vext_dire<a id="vext-dire"></a>
1458+
- td_vext_dire<a id="td_vext_dire"></a>
13811459
- *Type*: Integer
13821460
- *Description*:
13831461
- 1: the direction of external light field is along x axis.
13841462
- 2: the direction of external light field is along y axis.
13851463
- 3: the direction of external light field is along z axis.
13861464
- *Default*: 1
13871465
1466+
[back to top](#input-file)
1467+
- td_timescale<a id="td_timescale"></a>
1468+
- *Type*: Double
1469+
- *Description*: Time range of external electric field application. (fs)
1470+
- *Default*: 0.5
1471+
1472+
[back to top](#input-file)
1473+
- td_vexttype<a id="td_vexttype"></a>
1474+
- *Type*: Integer
1475+
- *Description*:
1476+
- 1: Gaussian-type light field.
1477+
- 2: Delta function form light field.
1478+
- 3: Trigonometric function form light field.
1479+
- *Default*: 1
1480+
1481+
[back to top](#input-file)
1482+
- td_vextout<a id="td_vextout"></a>
1483+
- *Type*: Integer
1484+
- *Description*:
1485+
- 1: Output external electric field.
1486+
- 0: do not Output external electric field.
1487+
- *Default*: 0
1488+
1489+
[back to top](#input-file)
1490+
- td_dipoleout<a id="td_dipoleout"></a>
1491+
- *Type*: Integer
1492+
- *Description*:
1493+
- 1: Output dipole.
1494+
- 0: do not Output dipole.
1495+
- *Default*: 0
1496+
13881497
[back to top](#input-file)
13891498
13901499
### Variables useful for debugging

source/Makefile.Objects

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ write_rho_dipole.o\
255255
write_HS.o\
256256
write_HS_R.o\
257257
write_dm.o\
258+
write_wfc_realspace.o\
258259
potential_libxc.o \
259260
potential_libxc_meta.o \
260261
efield.o \
@@ -280,6 +281,7 @@ variable_cell.o\
280281
dftu.o\
281282
dftu_yukawa.o\
282283
dftu_relax.o\
284+
dmft.o \
283285

284286
OBJS_COMMON=atom_spec.o \
285287
unitcell.o \

0 commit comments

Comments
 (0)