Loading...
Searching...
No Matches
init.hpp
Go to the documentation of this file.
1#pragma once
2
3/**
4 * SubspaceSelection — how the N states the gauge is built from are chosen
5 * out of the band window.
6 *
7 * Two answers exist, and they are two classes rather than a mode the builder
8 * branches on. IsolatedManifoldSelection takes the
9 * window as it stands: the bands ARE the states, and the choice is the
10 * projection gauge on them. ProjectabilityDisentanglementSelection
11 * classifies the bands and iterates a smooth subspace out of a wider window,
12 * which is what an entangled manifold needs. Both hand back the same thing
13 * -- an orthonormal frame per k-point, in the projection gauge -- so the
14 * gauge choice that follows does not know which one ran.
15 *
16 * Mirrors OverlapOperator: an interface, one class per physical context, and
17 * a factory (factory.hpp) that dispatches on the settings.
18 */
19
20#include <cstddef>
21#include <vector>
22
29
30namespace q3 {
31
33 public:
34 virtual ~SubspaceSelection() = default;
35
36 [[nodiscard]] virtual WannierSubspace choose(const WannierConstructionInputs& inputs) const = 0;
37};
38
39} // namespace q3
virtual ~SubspaceSelection()=default
virtual WannierSubspace choose(const WannierConstructionInputs &inputs) const =0