Loading...
Searching...
No Matches
q3::InterpolationSpecification Struct Reference

#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
 

Detailed Description

Definition at line 40 of file specification.hpp.

Member Function Documentation

◆ disentangles()

bool q3::InterpolationSpecification::disentangles ( ) const
inline

Definition at line 164 of file specification.hpp.

References disentanglement.

Referenced by q3::WannierConstructionSettings::from().

◆ first_band_index()

int q3::InterpolationSpecification::first_band_index ( ) const
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().

◆ has_band_selection()

bool q3::InterpolationSpecification::has_band_selection ( ) const
inline

◆ has_grid()

bool q3::InterpolationSpecification::has_grid ( ) const
inline

Definition at line 161 of file specification.hpp.

References grid.

◆ number_of_selected_bands()

int q3::InterpolationSpecification::number_of_selected_bands ( ) const
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().

◆ requested()

bool q3::InterpolationSpecification::requested ( ) const
inline

Definition at line 158 of file specification.hpp.

References method.

Referenced by q3::NonSelfConsistentFieldFlavor::run_calculation().

◆ wants_density_of_states()

bool q3::InterpolationSpecification::wants_density_of_states ( ) const
inline

Definition at line 178 of file specification.hpp.

References dos_mesh.

Member Data Documentation

◆ bands

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().

◆ disentanglement

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().

◆ disentanglement_convergence_tolerance

Real q3::InterpolationSpecification::disentanglement_convergence_tolerance = DisentanglementSettings{}.convergence_tolerance

Definition at line 130 of file specification.hpp.

Referenced by q3::WannierConstructionSettings::from().

◆ disentanglement_maximum_iterations

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().

◆ dos_mesh

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().

◆ export_formats

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().

◆ frozen_window_above_fermi_ev

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().

◆ frozen_window_is_automatic

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().

◆ grid

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().

◆ localization

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().

◆ localization_maximum_iterations

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().

◆ method

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().

◆ projectability_maximum

Real q3::InterpolationSpecification::projectability_maximum = BandClassificationThresholds{}.projectability_maximum

Definition at line 98 of file specification.hpp.

Referenced by q3::WannierConstructionSettings::from().

◆ projectability_minimum

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().

◆ projection_centers

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().

◆ projection_decay_bohr

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().

◆ trial_shells

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().


The documentation for this struct was generated from the following file: