Skip to content

Commit

Permalink
Merge pull request #565 from dyzheng/develop
Browse files Browse the repository at this point in the history
Merge ABACUS_2.2.0_beta to Develop branch
  • Loading branch information
dyzheng authored Dec 14, 2021
2 parents 4e0b527 + 985b853 commit 098b617
Show file tree
Hide file tree
Showing 531 changed files with 12,706 additions and 22,188 deletions.
8 changes: 4 additions & 4 deletions doc/generate-basis.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

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.

An example of this ORBITAL_INPUT file can be found in $ABACUS/tools/SIAB/2_Generate:
An example of this ORBITAL_INPUT file can be found in $ABACUS/tools/SIAB/SimulatedAnnealing/example_N:
```
#1.exe_dir
#----------------------------------------------------------------------------
Expand Down Expand Up @@ -101,7 +101,7 @@ The ORBITAL_INPUT file contains 5 parts :
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 Å):
- Dis 1.0 1.1 1.5 2.0 3.0
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.
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.
4. orbital generation
The main parameters for orbital generation
Expand Down Expand Up @@ -142,7 +142,7 @@ The ORBITAL_INPUT file contains 5 parts :
the accept rise of spillage when optimizing the kinetic energy
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/.
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/.
Some output files listed here are useful.
- ORBITAL_RESULTS.txt
Expand All @@ -160,4 +160,4 @@ For some elements, you can download the reference ORBITAL_INPUT files and pseudo
A file README is also given and you can decide the parameters with it as a reference.
In most cases, you just need to modify the parameters in Section 1, 2. Section 4 may be
partially modified if you need higher precision orbitals. The users are not encouraged to change
the settings in sections 5, unless you are very familiar with the code generating algorithms.
the settings in sections 5, unless you are very familiar with the code generating algorithms.
155 changes: 132 additions & 23 deletions doc/input-main.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@

- [Electronic structure](#electronic-structure)

[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)
[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)

- [Geometry relaxation](#geometry-relaxation)

[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)
[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)

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

[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)
[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)

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

Expand All @@ -47,13 +47,19 @@

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

[dft_plus_u](#dft_plus_u) | [orbital_corr](#orbital_corr) | [hubbard_u](#hubbard_u) | [hund_j](#hund_j) | [yukawa_potential](#yukawa_potential) | [omc](#omc)

- [VdW correction](#vdw-correction)

[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)

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

[berry_phase](#berry-phase) | [gdir](#gdir) | [towannier90](#towannier90) | [nnkpfile](#nnkpfile) | [wannier_spin](#wannier-spin) | [tddft](#tddft) [vext](#vext) | [vext_dire](#vext-dire)
[berry_phase](#berry-phase) | [gdir](#gdir) | [towannier90](#towannier90) | [nnkpfile](#nnkpfile) | [wannier_spin](#wannier-spin)

- [TDDFT: time dependent density functional theory](#TDDFT-doc)

[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)

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

Expand Down Expand Up @@ -292,7 +298,7 @@ This part of variables are used to control general system parameters.
- diago_proc<a id="diago_proc"></a>
- *Type*: Integer
- *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.
- *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.
- *Default*: 0
[back to top](#input-file)
Expand Down Expand Up @@ -605,6 +611,22 @@ calculations.
[back to top](#input-file)
- ocp<a id="ocp"></a>
- *Type*: Boolean
- *Description*: option for choose whether calcualting constrained DFT or not.
Only used for TDDFT.
- *Default*:0
[back to top](#input-file)
- ocp_set<a id="ocp_set"></a>
- *Type*: string
- *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.
- *Default*:none
[back to top](#input-file)
### Geometry relaxation
This part of variables are used to control the geometry relaxation.
Expand Down Expand Up @@ -687,11 +709,11 @@ This part of variables are used to control the geometry relaxation.
- stress_thr<a id="stress-thr"></a>
- *Type*: Real
- *Description*: The threshold of the stress convergence, it indicates the largest stress among all the directions, the unit is KBar,
- *Default*: 10
- *Default*: 0.01
[back to top](#input-file)
- press1, 2, 3<a id="press"></a>
- press1, press2, press3<a id="press"></a>
- *Type*: Real
- *Description*: the external pressures along three axes,the compressive stress is taken to be positive, the unit is KBar.
- *Default*: 0
Expand Down Expand Up @@ -831,6 +853,41 @@ This part of variables are used to control the output of properties.
[back to top](#input-file)
- out_element_info<a id="out-element-info"></a>
- *Type*: Boolean
- *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
Si-d1-orbital-k.dat Si-p2-orbital-r.dat Si-s2-orbital-k.dat
Si-d1-orbital-r.dat Si-p2-orbital-ru.dat Si-s2-orbital-r.dat
Si-d1-orbital-ru.dat Si-p-proj-k.dat Si-s2-orbital-ru.dat
Si.NONLOCAL Si-p-proj-r.dat Si-s-proj-k.dat
Si-p1-orbital-dru.dat Si-p-proj-ru.dat Si-s-proj-r.dat
Si-p1-orbital-k.dat Si-s1-orbital-dru.dat Si-s-proj-ru.dat
Si-p1-orbital-r.dat Si-s1-orbital-k.dat v_loc_g.dat
Si-p1-orbital-ru.dat Si-s1-orbital-r.dat
Si-p2-orbital-dru.dat Si-s1-orbital-ru.dat " for example.
- *Default*: 0
[back to top](#input-file)
- restart_save<a id="restart_save"></a>
- *Type*: Boolean
- *Description*: Only for LCAO, store charge density file and H matrix file every scf step for restart.
- *Default*: 0
[back to top](#input-file)
- restart_load<a id="restart_load"></a>
- *Type*: Boolean
- *Description*: Only for LCAO, used for restart, only if that:
* set restart_save as true and do scf calculation before.
* please ensure suffix is same with calculation before and density file and H matrix file is exist.
restart from stored density file and H matrix file.
- *Default*: 0
[back to top](#input-file)
### Density of states
This part of variables are used to control the calculation of DOS.
Expand Down Expand Up @@ -859,7 +916,7 @@ This part of variables are used to control the calculation of DOS.
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.
- efield<a id="efield"></a>
- *Type*: Bool
- *Type*: Boolean
- *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.
- *Default*: 0.
Expand Down Expand Up @@ -895,9 +952,10 @@ This part of variables are used to control the addition of an external electric
### DeePKS
This part of variables are used to control the usage of DeePKS method (a comprehensive data-driven approach to improve accuracy of DFT).
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 .
- out_descriptor<a id="out-descriptor"></a>
- *Type*: Bool
- *Type*: Boolean
- *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:
```
NUMERICAL_ORBITAL
Expand All @@ -917,7 +975,7 @@ This part of variables are used to control the usage of DeePKS method (a compreh
[back to top](#input-file)
- deepks_scf<a id="deepks-scf"></a>
- *Type*: Bool
- *Type*: Boolean
- *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.
- *Default*: 0
Expand Down Expand Up @@ -1071,7 +1129,7 @@ This part of variables are used to control the molecular dynamics calculations.
[back to top](#input-file)
- md_rstmd<a id="md-rstmd"></a>
- *Type*: Bool
- *Type*: Boolean
- *Description*: to control whether restart md.
- 0:When set to 0, ABACUS will calculate md normolly.
- 1:When set to 1, ABACUS will calculate md from last step in your test before.
Expand Down Expand Up @@ -1116,7 +1174,7 @@ This part of variables are used to control the molecular dynamics calculations.
- NVT_control<a id="nvt-control"></a>
- *Type*: Integer
- *Description*: Specifies which type of thermostat is used.
- 1: Nose-Hoover
- 1: Nose-Hoover-chains
- 2: Langevin
- 3: Andersen
- *Default*: 1
Expand Down Expand Up @@ -1174,43 +1232,43 @@ This part of variables are used to control the molecular dynamics calculations.
### DFT+U correction
This part of variables are used to control DFT+U correlated parameters
- dft_plus_u
- *Type*: Bool
- dft_plus_u<a id="dft_plus_u"></a>
- *Type*: Boolean
- *Description*: If set to 1, ABCUS will calculate plus U correction, which is especially important for correlated electron.
- *Default*: 0
[back to top](#input-file)
- orbital_corr
- orbital_corr<a id="orbital_corr"></a>
- *Type*: Int
- *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.
- *Default*: None
[back to top](#input-file)
- hubbard_u
- hubbard_u<a id="hubbard_u"></a>
- *Type*: Real
- *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.
- *Default*: 0.0
[back to top](#input-file)
- hund_j
- hund_j<a id="hund_j"></a>
- *Type*: Real
- *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.
- *Default*: 0.0
[back to top](#input-file)
- yukawa_potential
- *Type*: Bool
- yukawa_potential<a id="yukawa_potential"></a>
- *Type*: Boolean
- *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.
- *Default*: 0
[back to top](#input-file)
- omc
- *Type*: Bool
- omc<a id="omc"></a>
- *Type*: Boolean
- *Description*: whether turn on occupation matrix control method or not
- *Default*: 0
Expand Down Expand Up @@ -1361,6 +1419,8 @@ This part of variables are used to control berry phase and wannier90 interfacae
- *Default*: up
[back to top](#input-file)
### TDDFT: time dependent density functional theory
- tddft<a id="tddft"></a>
- *Type*: Integer
- *Description*:
Expand All @@ -1369,22 +1429,71 @@ This part of variables are used to control berry phase and wannier90 interfacae
- *Default*: 0
[back to top](#input-file)
- vext<a id="vext"></a>
- td_dr2<a id="td_dr2"></a>
- *Type*: Double
- *Description*: Accuracy of electron convergence when doing time-dependent evolution.
- *Default*: 1e-9
[back to top](#input-file)
- td_dt<a id="td_dt"></a>
- *Type*: Double
- *Description*: Time-dependent evolution time step. (fs)
- *Default*: 0.02
[back to top](#input-file)
- td_force_dt<a id="td_force_dt"></a>
- *Type*: Double
- *Description*: Time-dependent evolution force changes time step. (fs)
- *Default*: 0.02
[back to top](#input-file)
- td_vext<a id="td_vext"></a>
- *Type*: Integer
- *Description*:
- 1: add a laser material interaction (extern laser field).
- 0: no extern laser field.
- *Default*: 0
[back to top](#input-file)
- vext_dire<a id="vext-dire"></a>
- td_vext_dire<a id="td_vext_dire"></a>
- *Type*: Integer
- *Description*:
- 1: the direction of external light field is along x axis.
- 2: the direction of external light field is along y axis.
- 3: the direction of external light field is along z axis.
- *Default*: 1
[back to top](#input-file)
- td_timescale<a id="td_timescale"></a>
- *Type*: Double
- *Description*: Time range of external electric field application. (fs)
- *Default*: 0.5
[back to top](#input-file)
- td_vexttype<a id="td_vexttype"></a>
- *Type*: Integer
- *Description*:
- 1: Gaussian-type light field.
- 2: Delta function form light field.
- 3: Trigonometric function form light field.
- *Default*: 1
[back to top](#input-file)
- td_vextout<a id="td_vextout"></a>
- *Type*: Integer
- *Description*:
- 1: Output external electric field.
- 0: do not Output external electric field.
- *Default*: 0
[back to top](#input-file)
- td_dipoleout<a id="td_dipoleout"></a>
- *Type*: Integer
- *Description*:
- 1: Output dipole.
- 0: do not Output dipole.
- *Default*: 0
[back to top](#input-file)
### Variables useful for debugging
Expand Down
2 changes: 2 additions & 0 deletions source/Makefile.Objects
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ write_rho_dipole.o\
write_HS.o\
write_HS_R.o\
write_dm.o\
write_wfc_realspace.o\
potential_libxc.o \
potential_libxc_meta.o \
efield.o \
Expand All @@ -280,6 +281,7 @@ variable_cell.o\
dftu.o\
dftu_yukawa.o\
dftu_relax.o\
dmft.o \

OBJS_COMMON=atom_spec.o \
unitcell.o \
Expand Down
Loading

0 comments on commit 098b617

Please sign in to comment.