#include <specification.hpp>
Public Member Functions | |
| bool | disentangles () const |
| int | first_band_index () const |
| 0-based index of the first selected band; 0 when no range was given. | |
| bool | has_band_selection () const |
| bool | has_grid () const |
| int | number_of_selected_bands () const |
| How many bands the range holds; 0 when no range was given. | |
| bool | requested () const |
| bool | wants_density_of_states () const |
Public Attributes | |
| std::array< int, 2 > | bands = {0, 0} |
| std::string | disentanglement |
| Real | disentanglement_convergence_tolerance = DisentanglementSettings{}.convergence_tolerance |
| int | disentanglement_maximum_iterations = DisentanglementSettings{}.maximum_iterations |
| std::array< int, 3 > | dos_mesh = {0, 0, 0} |
| Evaluation step: the dense k-mesh for the interpolated DOS; {0,0,0} = none. | |
| std::vector< std::string > | export_formats |
| Interoperability formats to write beside the native record ("wannier90"). | |
| Real | frozen_window_above_fermi_ev = 0.0 |
| bool | frozen_window_is_automatic = true |
| std::array< int, 3 > | grid = {0, 0, 0} |
The full k-point grid control.kpoints_list enumerates; {0,0,0} = not stated. | |
| std::string | localization = "auto" |
| int | localization_maximum_iterations = SpreadMinimizationSettings{}.maximum_iterations |
| std::string | method |
| "" when no interpolation was asked for; otherwise the method name ("wannier"). | |
| Real | projectability_maximum = BandClassificationThresholds{}.projectability_maximum |
| Real | projectability_minimum = BandClassificationThresholds{}.projectability_minimum |
| The classifier's thresholds; the defaults are BandClassificationThresholds' own. | |
| std::vector< Vector3D > | projection_centers |
| Real | projection_decay_bohr = 1.0 |
Wannier: decay length of those orbitals in bohr (Wannier90's zona is 1/a). | |
| std::map< std::string, std::vector< int > > | trial_shells |
Definition at line 40 of file specification.hpp.
|
inline |
Definition at line 164 of file specification.hpp.
References disentanglement.
Referenced by q3::WannierConstructionSettings::from().
|
inline |
0-based index of the first selected band; 0 when no range was given.
Definition at line 171 of file specification.hpp.
References bands, and has_band_selection().
Referenced by q3::internal::build_wannier_interface_record().
|
inline |
Definition at line 167 of file specification.hpp.
References bands.
Referenced by q3::internal::build_wannier_interface_record(), first_band_index(), and number_of_selected_bands().
|
inline |
Definition at line 161 of file specification.hpp.
References grid.
|
inline |
How many bands the range holds; 0 when no range was given.
Definition at line 175 of file specification.hpp.
References bands, and has_band_selection().
Referenced by q3::internal::build_wannier_interface_record().
|
inline |
Definition at line 158 of file specification.hpp.
References method.
Referenced by q3::NonSelfConsistentFieldFlavor::run_calculation().
|
inline |
Definition at line 178 of file specification.hpp.
References dos_mesh.
| std::array<int, 2> q3::InterpolationSpecification::bands = {0, 0} |
The 1-based inclusive band range the model is built from; {0,0} = not stated, meaning the lowest bands.
A range exists because the manifold worth modelling does not always start at band 1. A pseudopotential that carries semicore states puts them underneath it – gallium with 3d in valence adds five bands below GaAs's four sp valence bands – and those lower bands are a different, separately isolated manifold rather than something to interpolate alongside. Selecting a range is NOT disentanglement: it picks a contiguous set that must still be isolated from what surrounds it at every k-point. A manifold that is entangled with its neighbours, as a transition metal's d and s bands are, is not fixed by any choice of range.
Definition at line 62 of file specification.hpp.
Referenced by q3::internal::build_wannier_interface_record(), first_band_index(), has_band_selection(), and number_of_selected_bands().
| std::string q3::InterpolationSpecification::disentanglement |
How the N states the gauge is built from are chosen out of the band window: "" or "none" requires the window to be exactly those states, "projectability" classifies and then optimises the subspace.
Definition at line 95 of file specification.hpp.
Referenced by disentangles().
| Real q3::InterpolationSpecification::disentanglement_convergence_tolerance = DisentanglementSettings{}.convergence_tolerance |
Definition at line 130 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| int q3::InterpolationSpecification::disentanglement_maximum_iterations = DisentanglementSettings{}.maximum_iterations |
Evaluation step: the subspace iteration's budget and its relative convergence tolerance; the defaults are DisentanglementSettings' own. A disentanglement that exhausts the budget throws with its last five spreads, and the retry ladder loosens the tolerance to a margin above the change among them: the iteration is deterministic, so the retry stops no later than the failure did, where a larger budget would cost as much again.
Definition at line 129 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| std::array<int, 3> q3::InterpolationSpecification::dos_mesh = {0, 0, 0} |
Evaluation step: the dense k-mesh for the interpolated DOS; {0,0,0} = none.
Definition at line 156 of file specification.hpp.
Referenced by wants_density_of_states().
| std::vector<std::string> q3::InterpolationSpecification::export_formats |
Interoperability formats to write beside the native record ("wannier90").
Definition at line 153 of file specification.hpp.
Referenced by q3::write_and_export_interpolation_record().
| Real q3::InterpolationSpecification::frozen_window_above_fermi_ev = 0.0 |
In electronvolts; see the schema for why this is not redundant with the above. Read only when frozen_window_is_automatic is false.
Definition at line 103 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| bool q3::InterpolationSpecification::frozen_window_is_automatic = true |
frozen_window_above_fermi_ev: auto, the default: the classifier applies the published window for atomic projectors, E_F + 2 eV, to metal and insulator alike (BandClassifier documents why the two are not treated differently). A number given explicitly overrides it.
Definition at line 110 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| std::array<int, 3> q3::InterpolationSpecification::grid = {0, 0, 0} |
The full k-point grid control.kpoints_list enumerates; {0,0,0} = not stated.
Definition at line 45 of file specification.hpp.
Referenced by q3::internal::build_wannier_interface_record(), and has_grid().
| std::string q3::InterpolationSpecification::localization = "auto" |
How the gauge inside the chosen subspace is fixed.
auto minimise the spread when the record carries the neighbour overlaps, and keep the projection gauge when it does not. maximal minimise it, and fail if the record cannot support that. none keep the projection gauge.
The default is "auto" rather than "maximal" because the spread is defined through M_mn(k,b), and a record imported from another code's projections and eigenvalues alone does not carry them. Defaulting to a demand would make every such record an error for asking for the default – so the default is a preference and "maximal" is the demand. Localising is the preference because the projection gauge is exact at the mesh points whatever it does, which means a model built without it looks perfect where it was fitted and is only as good as its trial orbitals everywhere else, which is where an interpolator is actually used.
Definition at line 150 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| int q3::InterpolationSpecification::localization_maximum_iterations = SpreadMinimizationSettings{}.maximum_iterations |
Evaluation step: the spread minimiser's iteration budget. Three thousand is far more than a well-posed case needs (copper converges in about sixty); the retry ladder doubles it after a stall, which is the one reason it is a key rather than a constant. The default is SpreadMinimizationSettings' own.
Definition at line 119 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| std::string q3::InterpolationSpecification::method |
"" when no interpolation was asked for; otherwise the method name ("wannier").
Definition at line 42 of file specification.hpp.
Referenced by q3::capture_interpolation_record(), and requested().
| Real q3::InterpolationSpecification::projectability_maximum = BandClassificationThresholds{}.projectability_maximum |
Definition at line 98 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| Real q3::InterpolationSpecification::projectability_minimum = BandClassificationThresholds{}.projectability_minimum |
The classifier's thresholds; the defaults are BandClassificationThresholds' own.
Definition at line 97 of file specification.hpp.
Referenced by q3::WannierConstructionSettings::from().
| std::vector<Vector3D> q3::InterpolationSpecification::projection_centers |
Wannier: centres of the s-type trial orbitals in crystal coordinates. Empty selects the pseudopotentials' own atom-centred orbitals – the wrong shape whenever the Wannier functions are not on atoms (silicon's valence manifold lives on the bonds), so the example states them.
Definition at line 70 of file specification.hpp.
Referenced by q3::internal::build_wannier_interface_record().
| Real q3::InterpolationSpecification::projection_decay_bohr = 1.0 |
Wannier: decay length of those orbitals in bohr (Wannier90's zona is 1/a).
Definition at line 72 of file specification.hpp.
Referenced by q3::internal::build_wannier_interface_record().
| std::map<std::string, std::vector<int> > q3::InterpolationSpecification::trial_shells |
Build step: which of each species' pseudo-atomic shells become trial orbitals, as 0-based indices in the order the pseudopotential file lists its atomic wavefunctions. A species not named keeps every shell its pseudopotential does not mark unusable (a negative occupation, or a zero-norm radial function), which is the whole set and the default.
An augmented dataset lists more than its atom's valence: a PAW file's unoccupied second s and p partial waves, an ultrasoft file's empty 4s and 4p projector channels. As trial orbitals they double the functions asked for and the band window sized from them. The automatic workflow decides which shells to leave out and writes them here; the engine honours the list and does not guess.
Definition at line 88 of file specification.hpp.
Referenced by q3::internal::build_wannier_interface_record().