|
Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
|
#include <init.hpp>
Public Member Functions | |
| PlanewaveWannierCapture (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const PseudopotentialSet &pseudopotential_set) | |
| WannierInputs | build (const KPointsGrid &kpoint_grid, int grid_dimension_x, int grid_dimension_y, int grid_dimension_z, int number_of_bands, const std::vector< std::vector< int > > &g_vector_indices_by_kpoint, const PlanewaveKohnShamQuantumSystem &quantum_system, const PlanewaveLocalOrbitalSet &trial_orbitals, int first_band_index=0) const |
| WannierInputs | build_ultrasoft (const KPointsGrid &kpoint_grid, int grid_dimension_x, int grid_dimension_y, int grid_dimension_z, int number_of_bands, const std::vector< std::vector< int > > &g_vector_indices_by_kpoint, const UltrasoftPlanewaveKohnShamQuantumSystem &quantum_system, const PlanewaveLocalOrbitalSet &trial_orbitals, const execution::PlanewaveExecutionPolicy &execution_policy, int first_band_index=0) const |
|
inline |
Definition at line 78 of file init.hpp.
References q3::MillerIndexLookup::build(), and q3::PlanewaveBasis::g_vectors().
|
inline |
Norm-conserving pseudopotentials, S = I.
g_vector_indices_by_kpoint[kpoint_index] and quantum_system must come from the same calculation – the G-vector list a k-point's wavefunction coefficients are stored against, not a fresh recomputation, exactly as the kernels already require of their own callers. quantum_system must hold number_of_bands bands at every one of kpoint_grid's physical k-points.
Definition at line 98 of file init.hpp.
Referenced by q3::internal::build_wannier_interface_record().
|
inline |
Ultrasoft/PAW: the same record with the augmentation term in M_mn(k,b) and the S metric in A_mn(k). quantum_system must have been through UltrasoftPlanewaveKohnShamQuantumSystem::init() so ultrasoft_basis() is populated.
Both consumers (the projections' overlap operator and the Bloch overlap's augmentation term) need every k-point's Kleinman-Bylander projector matrix – a (k, neighbour) pair needs the neighbour's too – so compute the whole set once up front rather than once for a k-point's own turn and again whenever another k-point's iteration needs it as a neighbour.
Definition at line 124 of file init.hpp.
References q3::compute_kleinman_bylander_projectors(), q3::KPointsGrid::number_of_kpoints(), and q3::UltrasoftPlanewaveKohnShamQuantumSystem::ultrasoft_basis().
Referenced by q3::internal::build_wannier_interface_record().