Skip to content

Commit e49c438

Browse files
101 complete basis set migration (#102)
- Migrate / Add the following basis sets: - plane waves (no pseudopotentials) - LAPW -- revised structure centered on l-channels (similar to Gulans' uploads) -- automatic type detection (new) -- scaffhold generator (new) - GPW - AtomCentered (just placeholder) - Add testing for all features (new) - Touch up `Mesh` - Add normalization flow decorators to `general.py` --------- Co-authored-by: ndaelman <[email protected]> Co-authored-by: nathan <[email protected]>
1 parent 90c99bc commit e49c438

File tree

8 files changed

+1417
-51
lines changed

8 files changed

+1417
-51
lines changed

docs/model_method/basis_sets.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Basis Sets
2+
3+
The following lays down the schema annotation for several families of basis sets.
4+
We start off genercially before running over specific examples.
5+
The aim is not to introduce the full theory behind every basis set, but just enough to understand its main concepts and how they relate.
6+
7+
## General Structure
8+
9+
Basis sets are used by codes to represent various kinds of electronic structures, e.g. wavefunctions, densities, exchange densities, etc.
10+
Each electronic structure is therefore described by an individual `BasisSetContainer` in the schema.
11+
12+
Basis sets may be partitioned by various regions, spanning either physical / reciprocal space, energy (i.e. core vs. valence), or potential / Hamiltonian.
13+
We will cover the partitions per example below.
14+
Each `BasisSetContainer` is then constructed out of several `basis_set_components` matching a single region.
15+
Sometimes, a region is defined in terms of another schema section, e.g. an atom center (`species_scope`) or Hamiltonian terms (`hamiltonian_scope`).
16+
17+
Note that typically, different kinds of regions also have different mathematical formulations.
18+
Each formulation has its own dedicated section, to facilitate their reuse.
19+
These are all derived from the abstract section `BasisSetComponent`, so that `basis_set_components: list[BasisSetComponent]`.
20+
21+
Generically, `BasisSetComponent` will allude to the the formula at large and just focus on capturing the _subtype_, as well as relevant _parameters_.
22+
The most relevant ones are those that most commonly listed in the Method section of an article.
23+
These typically also influence the _precision_ most.
24+
Extra, code-specific subtypes and parameters can be added by their respective parsers.
25+
26+
This then coalesces into the following diagram:
27+
28+
```
29+
ModelMethod
30+
└── NumericalSettings[0]
31+
└── ...
32+
└── NumericalSettings[n] = BasisSetContainer
33+
└── BasisSetComponent[1]
34+
└── ...
35+
└── BasisSetComponent[n]
36+
└──> AtomsState
37+
└──> BaseModelMethod
38+
```
39+
40+
## Plane-waves
41+
42+
Plane-wave basis sets start from the description of a free electron and use Fourier to construct the representations of bound electrons.
43+
In reciprocal space, the basis set can thus be thought of as vectors in a Cartesian* grid enclosed within a sphere.
44+
45+
The main parameter is the spherical radius, i.e. the _cutoff_, which corresponds to the highest frequency representable Fourier frequency.
46+
By convention, the radius is typically expressed in terms of the kinetic energy for the matching free-electron wave.
47+
`PlaneWaveBasisSet` allows storing either `cutoff_radius` and `cutoff_energy`.
48+
It can even derive the former from the latter via normalization.
49+
50+
### Pseudopotentials
51+
52+
Under construction...
53+
54+
## LAPW
55+
56+
The family of linearized augmented plane-waves is one of the best examples of region partitioning:
57+
58+
- first it partitions the physical space into regions surrounding the atomic nuclei, i.e. the _muffin-tin spheres_, and the rest, i.e. the _interstitial region_.
59+
- it then further partitions the muffin tins by energy, i.e. core versus valence.
60+
Note that unlike with pseudpotentials, the electrons are not abstracted away here.
61+
They are instead explicitly accounted for and relaxed, just via a different representation.
62+
Hence, LAPW is a _full-electron approach_.
63+
64+
The interstitial region, covering mostly loose bonding, is described by plane-waves (`APWPlaneWaveBasisSet`). [1]
65+
The valence electrons in the muffin tin (`MuffinTinRegion`), meanwhile, are represented by the spherically symmetric Schrödigner equation. [1]
66+
They follow the additional constraint of having to match the plane-wave description.
67+
In that sense, where the plane-wave description becomes too expensive, it is "augmented" by the muffin-tin description.
68+
This results in a lower plane-wave cutoff.
69+
70+
The spherically symmetric Schrödigner equation decomposes into an angular and radial part.
71+
In traditional APW (not supported in NOMAD), the angular and radial part are coupled in a non-linear fashion via the radial energy (at the boundary).
72+
All versions of LAPW simplify the coupling by parametrizing this radial energy. [1]
73+
74+
The representation vector is then developed in terms of the angular basis vectors, i.e. $l$-channels, each with their corresponding radial energy parameter.
75+
This approach is -confusingly- also called _APW_.
76+
It is typically not found standalone, though.
77+
Instead, the linearization introduces a secondary representation via the first-order derivative of the basis vector (function).
78+
Both vectors are typically developed together.
79+
This technique is called linearized APW (LAPW). [1]
80+
81+
Other formulas have been experimented with too.
82+
For example, the use of even higher-order derivatives, i.e. superlinearized APW (SLAPW). [2, 3]
83+
All of these types are captured by `APWOrbital`, where `type` distinguishes between APW, LAPW, or SLAPW.
84+
The `name` quantity
85+
86+
Another option is to stay with APW (or LAPW) and add standalone vectors targeting specific atomic states, e.g. high-energy core states, valence states, etc.
87+
These are called _local orbitals_ (lo) and bear other constraints.
88+
Some authors distinguish different vector sums with different kinds of local orbitals, e.g. lo, LO, high-dimensional LO (HDLO). [2, 4]
89+
Since there is no community-wide consensus on the use of these abbreviations, we only utilize `lo` via `APWLocalOrbital`.
90+
91+
In summary, a generic LAPW basis set can thus be summarized as follows:
92+
93+
```
94+
LAPW+lo
95+
├── 1 x plane-wave basis set
96+
└── n x muffin-tin regions
97+
└── l_max x l-channels
98+
├── orbitals
99+
└── local orbitals ?
100+
```
101+
102+
or in terms of the schema:
103+
104+
```
105+
BasisSetContainer(name: LAPW+lo)
106+
├── APWPlaneWaveBasisSet
107+
├── MuffinTinRegion(atoms_state: atom A)
108+
├── ...
109+
└── MuffinTinRegion(atoms_state: atom N)
110+
├── channel 0
111+
├── ...
112+
└── channel l_max
113+
├── APWOrbital(type: lapw)
114+
└── APWLocalOrbital ?
115+
```
116+
117+
[1]: D. J. Singh and L. Nordström, \"INTRODUCTION TO THE LAPW METHOD,\" in Planewaves, pseudopotentials, and the LAPW method, 2nd ed. New York, NY: Springer, 2006.
118+
119+
[2]: A. Gulans, S. Kontur, et al., exciting: a full-potential all-electron package implementing density-functional theory and many-body perturbation theory, _J. Phys.: Condens. Matter_ **26** (363202), 2014. DOI: 10.1088/0953-8984/26/36/363202
120+
121+
[3]: J. VandeVondele, M. Krack, et al., WIEN2k: An APW+lo program for calculating the properties of solids, _J. Chem. Phys._ **152**(074101), 2020. DOI: 10.1063/1.5143061
122+
123+
[4]: D. Singh and H. Krakauer, H-point phonon in molybdenum: Superlinearized augmented-plane-wave calculations, _Phys. Rev. B_ **43**(1441), 1991. DOI: 10.1103/PhysRevB.43.1441
124+
125+
## Gaussian-Planewaves (GPW)
126+
127+
The CP2K code introduces an algorithm called QuickStep that partitions by Hamiltonian, describing
128+
129+
- the kinetic and Coulombic electron-nuclei interaction terms of a Gaussian-type orbital (GTO).
130+
- the electronic Hartree energy via plane-waves.
131+
132+
This GPW choice is to increase performance. [1]
133+
In the schema, we would write:
134+
135+
```
136+
BasisSetContainer(name: GPW)
137+
├── PlaneWaveBasisSet(hamiltonian_scope: [`/path/to/kinetic_term/hamiltonian`, `/path/to/e-n_term/hamiltonian`])
138+
└── AtomCenteredBasisSet(name: GTO, hamiltonian_scope: [`/path/to/hartree_term/hamiltonian`])
139+
```
140+
141+
For further details on the schema, see the CP2K parser documentation.
142+
143+
[1]: J. VandeVondele, M. Krack, et al., Quickstep: Fast and accurate density functional calculations using a mixed Gaussian and plane waves approach,
144+
_Comp. Phys. Commun._ **167**(2), 103-128, 2005. DOI: 10.1016/j.cpc.2004.12.014.

0 commit comments

Comments
 (0)