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

#include <init.hpp>

Public Member Functions

std::vector< Complex > hamiltonian_at_kpoint (const Vector3D &kpoint) const
 
const std::vector< std::vector< Complex > > & hamiltonian_blocks () const
 
bool has_nontrivial_overlap () const
 
const std::vector< LocalOrbitalLatticeVector > & lattice_vectors () const
 
Real maximum_hamiltonian_magnitude_beyond (Real minimum_distance) const
 
int number_of_orbitals () const
 
std::vector< Complex > overlap_at_kpoint (const Vector3D &kpoint) const
 S(k) by the same Bloch sum, or the identity when the basis is orthonormal.
 
const std::vector< std::vector< Complex > > & overlap_blocks () const
 
void set_domain (int number_of_orbitals, std::vector< LocalOrbitalLatticeVector > lattice_vectors)
 
void set_hamiltonian (std::vector< std::vector< Complex > > blocks)
 
void set_overlap (std::vector< std::vector< Complex > > blocks)
 

Detailed Description

Definition at line 60 of file init.hpp.

Member Function Documentation

◆ hamiltonian_at_kpoint()

std::vector< Complex > q3::LocalOrbitalHamiltonian::hamiltonian_at_kpoint ( const Vector3D &  kpoint) const
inline

H(k) = sum_R w_R e^{+2 pi i k.R} H(R), column-major, for kpoint in crystal coordinates. kpoint need not lie on any mesh – evaluating this anywhere is what the representation is for.

Definition at line 140 of file init.hpp.

Referenced by q3::LocalOrbitalQuantumStateInterpolator::eigenvalues_at().

◆ hamiltonian_blocks()

const std::vector< std::vector< Complex > > & q3::LocalOrbitalHamiltonian::hamiltonian_blocks ( ) const
inline

Definition at line 127 of file init.hpp.

Referenced by q3::HamiltonianDecay::measured_on().

◆ has_nontrivial_overlap()

bool q3::LocalOrbitalHamiltonian::has_nontrivial_overlap ( ) const
inline

Definition at line 115 of file init.hpp.

◆ lattice_vectors()

const std::vector< LocalOrbitalLatticeVector > & q3::LocalOrbitalHamiltonian::lattice_vectors ( ) const
inline

◆ maximum_hamiltonian_magnitude_beyond()

Real q3::LocalOrbitalHamiltonian::maximum_hamiltonian_magnitude_beyond ( Real  minimum_distance) const
inline

Largest |H(R)| over the blocks whose lattice vector is at least minimum_distance from the origin in Cartesian length – the direct measure of how fast the Hamiltonian decays, and therefore of how far a Bloch sum truncated to this domain can be trusted between the k-points it was built from.

Definition at line 170 of file init.hpp.

◆ number_of_orbitals()

◆ overlap_at_kpoint()

std::vector< Complex > q3::LocalOrbitalHamiltonian::overlap_at_kpoint ( const Vector3D &  kpoint) const
inline

S(k) by the same Bloch sum, or the identity when the basis is orthonormal.

Definition at line 149 of file init.hpp.

Referenced by q3::LocalOrbitalQuantumStateInterpolator::eigenvalues_at().

◆ overlap_blocks()

const std::vector< std::vector< Complex > > & q3::LocalOrbitalHamiltonian::overlap_blocks ( ) const
inline

Definition at line 131 of file init.hpp.

◆ set_domain()

void q3::LocalOrbitalHamiltonian::set_domain ( int  number_of_orbitals,
std::vector< LocalOrbitalLatticeVector >  lattice_vectors 
)
inline

Fix the basis size and the real-space domain. Any blocks previously set are discarded, since their shape and order are no longer defined.

The Bloch sum takes the translations and weights as parallel arrays. Unpacking them once here rather than per call keeps the dense-mesh sampling path – tens of thousands of calls – allocation-free.

Definition at line 66 of file init.hpp.

References lattice_vectors(), and number_of_orbitals().

◆ set_hamiltonian()

void q3::LocalOrbitalHamiltonian::set_hamiltonian ( std::vector< std::vector< Complex > >  blocks)
inline

H(R): one column-major number_of_orbitals x number_of_orbitals block per lattice vector, in the domain's order.

Definition at line 101 of file init.hpp.

◆ set_overlap()

void q3::LocalOrbitalHamiltonian::set_overlap ( std::vector< std::vector< Complex > >  blocks)
inline

S(R), same layout as the Hamiltonian blocks. Not setting it means the orbitals are orthonormal and S(k) is the identity for every k.

Definition at line 110 of file init.hpp.


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