Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
q3::PlanewaveWannierCapture Class Reference

#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
 

Detailed Description

Definition at line 76 of file init.hpp.

Constructor & Destructor Documentation

◆ PlanewaveWannierCapture()

q3::PlanewaveWannierCapture::PlanewaveWannierCapture ( const Crystal &  crystal_structure,
const PlanewaveBasis &  planewave_basis,
const PseudopotentialSet &  pseudopotential_set 
)
inline

Definition at line 78 of file init.hpp.

References q3::MillerIndexLookup::build(), and q3::PlanewaveBasis::g_vectors().

Member Function Documentation

◆ build()

WannierInputs q3::PlanewaveWannierCapture::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
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().

◆ build_ultrasoft()

WannierInputs q3::PlanewaveWannierCapture::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

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


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