Loading...
Searching...
No Matches
q3::MaximallyLocalizedGaugeChoice Class Reference

#include <maximally_localized_gauge_choice.hpp>

+ Inheritance diagram for q3::MaximallyLocalizedGaugeChoice:

Public Member Functions

 MaximallyLocalizedGaugeChoice (SpreadMinimizationSettings settings)
 
WannierGauge choose (const WannierConstructionInputs &inputs, const WannierSubspace &subspace) const override
 
- Public Member Functions inherited from q3::GaugeChoice
virtual ~GaugeChoice ()=default
 

Static Public Member Functions

static void require_supported (const WannierConstructionInputs &inputs)
 Throws WannierDiagnosticError, with the way out named, when the record cannot be localised.
 

Detailed Description

Definition at line 43 of file maximally_localized_gauge_choice.hpp.

Constructor & Destructor Documentation

◆ MaximallyLocalizedGaugeChoice()

q3::MaximallyLocalizedGaugeChoice::MaximallyLocalizedGaugeChoice ( SpreadMinimizationSettings  settings)
inlineexplicit

Definition at line 45 of file maximally_localized_gauge_choice.hpp.

Member Function Documentation

◆ choose()

WannierGauge q3::MaximallyLocalizedGaugeChoice::choose ( const WannierConstructionInputs &  inputs,
const WannierSubspace &  subspace 
) const
inlineoverridevirtual

The guiding centres are taken once and then held for the whole run.

The trial-orbital positions when the record carries them, which is Wannier90's choice and the right one; the projection gauge's own centres only as a fallback. The difference is not academic. On a rattled four-atom Si3C cell the fallback started at Omega = 186 A^2 and stalled at 170, with centres 5 A from any atom, while Wannier90 on the same matrices started at 36.7 and finished at 25.9: with the phase branches inconsistent across k, the Berry-phase centres of the starting gauge are already garbage, and guiding to garbage keeps it.

Implements q3::GaugeChoice.

Definition at line 76 of file maximally_localized_gauge_choice.hpp.

References q3::SpreadTerms::centers_bohr, q3::WannierSubspace::classification, q3::SpreadFunctional::evaluate(), q3::SpreadReport::evaluated_as(), q3::WannierGauge::frames, q3::WannierSubspace::frames, q3::SpreadMinimizationResult::gauges, q3::SpreadMinimizationResult::gradient_norm, q3::WannierInputs::has_trial_orbital_centers(), q3::log::info(), q3::SpreadMinimizationResult::initial_minimizable_bohr_squared, q3::SpreadMinimizationResult::iterations, q3::SpreadReport::localization_converged, q3::SpreadReport::localization_gradient_norm, q3::SpreadReport::localization_iterations, q3::SpreadReport::localized, q3::multiply(), q3::None, q3::WannierConstructionInputs::number_of_wannier_functions(), q3::WannierConstructionInputs::overlaps_in_gauge(), q3::WannierConstructionInputs::record(), require_supported(), q3::SpreadMinimizer::run(), q3::WannierGauge::spread, q3::SpreadMinimizationResult::stationary, q3::WannierConstructionInputs::stencil(), q3::SpreadMinimizationResult::terms, and q3::WannierInputs::trial_orbital_centers_bohr.

◆ require_supported()


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