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

#include <init.hpp>

+ Inheritance diagram for q3::UltrasoftPlanewaveKohnShamQuantumSystem:

Public Member Functions

 UltrasoftPlanewaveKohnShamQuantumSystem ()=default
 
 ~UltrasoftPlanewaveKohnShamQuantumSystem () override=default
 
Real d_matrix_element (int atom_index, int species_type, int projector_index_i, int projector_index_j, int spin=0) const override
 
bool has_ultrasoft () const override
 
void init (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const PseudopotentialSet &pseudopotential_set) override
 
void require_identity_overlap (const std::string &purpose) const override
 
void set_nonlocal_effective_potential (const UltrasoftPlanewaveEffectivePotential &nonlocal_effective_potential)
 
void set_nonlocal_effective_potential (UltrasoftPlanewaveEffectivePotential *nonlocal_effective_potential)
 
const UltrasoftPlanewaveBasis & ultrasoft_basis () const
 
- Public Member Functions inherited from q3::NormConservingPlanewaveKohnShamQuantumSystem
 NormConservingPlanewaveKohnShamQuantumSystem ()=default
 
 ~NormConservingPlanewaveKohnShamQuantumSystem () override=default
 
const NormConservingPlanewaveBasis & pseudopotential_basis () const
 
- Public Member Functions inherited from q3::PlanewaveKohnShamQuantumSystem
 PlanewaveKohnShamQuantumSystem ()=default
 
 PlanewaveKohnShamQuantumSystem (const KPointsGrid &kpoint_grid, const PlanewaveBasis &basis, int number_of_bands, int number_of_spin_components_value, Real number_of_electrons)
 
 ~PlanewaveKohnShamQuantumSystem () override=default
 
void allocate_electronic_states (const std::vector< int > &number_of_plane_waves_per_kpoint)
 
const PlanewaveBasis & basis () const
 
void copy_quantum_states_from (const QuantumSystem< PlanewaveKohnShamQuantumState > &source) override
 
Real eigenvalue (int kpoint_state_index, int band_index) const
 
Matrix< Real > eigenvalues_matrix () const
 
Real fermi_energy () const
 
const KPointsGrid & kpoint_grid () const
 
int number_of_bands () const
 
Real number_of_electrons () const
 
int number_of_kpoint_states () const
 
int number_of_occupied_bands_per_spin () const
 
int number_of_plane_waves_for_kpoint_state (int kpoint_state_index) const
 
Real occupation_by_kpoint_state_index_and_band_index (int kpoint_state_index, int band_index) const
 
Occupation occupation_configuration () const
 Return a snapshot of the current occupation configuration.
 
PlanewaveKohnShamQuantumState & quantum_state (int kpoint_state_index, int band_index)
 
const PlanewaveKohnShamQuantumState & quantum_state (int kpoint_state_index, int band_index) const
 
void set_basis (const PlanewaveBasis *basis)
 
void set_eigenvalue (int kpoint_state_index, int band_index, Real value)
 
void set_eigenvalues_from_matrix (const Matrix< Real > &eigenvalues)
 
void set_fermi_energy (Real value)
 
void set_kpoint_grid (const KPointsGrid *kpoint_grid)
 
void set_number_of_bands (int value)
 
void set_number_of_electrons (Real value)
 
void set_occupation (int kpoint_state_index, int band_index, Real value)
 
Real spin_degeneracy () const
 
Complex wavefunction (int kpoint_index, int band_index, int g_vector_index) const
 
Complex * wavefunction_band_data (int kpoint_state_index, int band_index)
 
const Complex * wavefunction_band_data (int kpoint_state_index, int band_index) const
 
- Public Member Functions inherited from q3::KohnShamQuantumSystem< PlanewaveKohnShamQuantumState >
 ~KohnShamQuantumSystem () override=default
 
- Public Member Functions inherited from q3::QuantumSystem< QuantumStateType >
virtual ~QuantumSystem ()=default
 
virtual void copy_quantum_states_from (const QuantumSystem< QuantumStateType > &source)
 
QuantumStateType & get_quantum_state_by_index (int index)
 
const QuantumStateType & get_quantum_state_by_index (int index) const
 Access a quantum state by flat index.
 
void load_quantum_system (const QuantumSystem< QuantumStateType > &system)
 
int number_of_quantum_states () const
 Number of quantum states in the system.
 

Protected Attributes

UltrasoftPlanewaveEffectivePotential * active_nonlocal_effective_potential_ = nullptr
 
UltrasoftPlanewaveEffectivePotential owned_nonlocal_effective_potential_
 
UltrasoftPlanewaveBasis * ultrasoft_planewave_basis_ = nullptr
 Non-owning pointer to the ultrasoft-typed basis (owned by parent's unique_ptr).
 
- Protected Attributes inherited from q3::NormConservingPlanewaveKohnShamQuantumSystem
std::unique_ptr< NormConservingPlanewaveBasis > norm_conserving_basis_
 NC pseudopotential basis: local potential, beta projectors, core charge, atomic densities.
 
- Protected Attributes inherited from q3::PlanewaveKohnShamQuantumSystem
const PlanewaveBasis * basis_ = nullptr
 
Real fermi_energy_ = 0.0
 
bool is_fractionally_occupied_ = false
 
const KPointsGrid * kpoint_grid_ = nullptr
 
int number_of_bands_ = 0
 
Real number_of_electrons_ = 0.0
 
- Protected Attributes inherited from q3::QuantumSystem< QuantumStateType >
std::vector< QuantumStateType > quantum_states_
 

Additional Inherited Members

- Public Attributes inherited from q3::KohnShamQuantumSystem< PlanewaveKohnShamQuantumState >
int number_of_spin_components
 
- Public Attributes inherited from q3::QuantumSystem< QuantumStateType >
Crystal * crystal_structure {nullptr}
 
const QuantumSystem< QuantumStateType > * preloaded_quantum_system_ {nullptr}
 

Detailed Description

Ultrasoft pseudopotential quantum system.

Owns static augmentation data via UltrasoftPlanewaveBasis. Owns a copy of the effective D-matrix when used as a post-SCF snapshot (populated by set_nonlocal_effective_potential(const&) in result()). During SCF iterations the iterator holds the authoritative D-matrix and wires it in via set_nonlocal_effective_potential(pointer).

Definition at line 40 of file init.hpp.

Constructor & Destructor Documentation

◆ UltrasoftPlanewaveKohnShamQuantumSystem()

q3::UltrasoftPlanewaveKohnShamQuantumSystem::UltrasoftPlanewaveKohnShamQuantumSystem ( )
default

◆ ~UltrasoftPlanewaveKohnShamQuantumSystem()

q3::UltrasoftPlanewaveKohnShamQuantumSystem::~UltrasoftPlanewaveKohnShamQuantumSystem ( )
overridedefault

Member Function Documentation

◆ d_matrix_element()

Real q3::UltrasoftPlanewaveKohnShamQuantumSystem::d_matrix_element ( int  atom_index,
int  species_type,
int  projector_index_i,
int  projector_index_j,
int  spin = 0 
) const
inlineoverridevirtual

Get D-matrix element for a pair of expanded projector channels. For norm-conserving PPs, dispatches to the bare D-matrix (dion) when the (l,m) indices match. For ultrasoft PPs, the ultrasoft subclass overrides this to return the effective D-matrix element. D_ij for one projector pair, in one spin channel.

Norm-conserving ignores spin: its D_ion comes straight from the dataset and has no v_eff dependence, so both channels share it exactly. Ultrasoft and PAW override this, where D = D_ion + ∫v_eff·Q_ij does depend on spin.

Reimplemented from q3::NormConservingPlanewaveKohnShamQuantumSystem.

Definition at line 101 of file init.hpp.

References active_nonlocal_effective_potential_, q3::PlanewaveKohnShamQuantumSystem::basis(), q3::UltrasoftPlanewaveEffectivePotential::element(), q3::UltrasoftPlanewaveEffectivePotential::is_initialized(), and q3::NormConservingPlanewaveKohnShamQuantumSystem::pseudopotential_basis().

◆ has_ultrasoft()

bool q3::UltrasoftPlanewaveKohnShamQuantumSystem::has_ultrasoft ( ) const
inlineoverridevirtual

This quantum system uses ultrasoft pseudopotentials.

Reimplemented from q3::NormConservingPlanewaveKohnShamQuantumSystem.

Definition at line 66 of file init.hpp.

◆ init()

void q3::UltrasoftPlanewaveKohnShamQuantumSystem::init ( const Crystal &  crystal_structure,
const PlanewaveBasis &  planewave_basis,
const PseudopotentialSet &  pseudopotential_set 
)
inlineoverridevirtual

◆ require_identity_overlap()

void q3::UltrasoftPlanewaveKohnShamQuantumSystem::require_identity_overlap ( const std::string &  purpose) const
inlineoverridevirtual

Always refuses: augmentation charges bring an overlap operator S, so the eigenproblem is H ψ = E S ψ. PAW runs use this system too.

Reimplemented from q3::NormConservingPlanewaveKohnShamQuantumSystem.

Definition at line 74 of file init.hpp.

◆ set_nonlocal_effective_potential() [1/2]

void q3::UltrasoftPlanewaveKohnShamQuantumSystem::set_nonlocal_effective_potential ( const UltrasoftPlanewaveEffectivePotential &  nonlocal_effective_potential)
inline

Copy the converged non-local effective potential into this object's owned storage. Used by UltrasoftPlanewaveKohnShamSCFIterator::result() to produce a self-contained snapshot that does not rely on the iterator's lifetime.

Definition at line 86 of file init.hpp.

References active_nonlocal_effective_potential_, and owned_nonlocal_effective_potential_.

Referenced by q3::UltrasoftPlanewavePseudopotentialKohnShamSCFIterator::prepare_hamiltonian(), and q3::UltrasoftPlanewavePseudopotentialKohnShamSCFIterator::result().

◆ set_nonlocal_effective_potential() [2/2]

void q3::UltrasoftPlanewaveKohnShamQuantumSystem::set_nonlocal_effective_potential ( UltrasoftPlanewaveEffectivePotential *  nonlocal_effective_potential)
inline

Wire in the non-local effective potential via non-owning pointer. Used during SCF iterations where the iterator owns the authoritative D-matrix.

Definition at line 96 of file init.hpp.

References active_nonlocal_effective_potential_.

◆ ultrasoft_basis()

const UltrasoftPlanewaveBasis & q3::UltrasoftPlanewaveKohnShamQuantumSystem::ultrasoft_basis ( ) const
inline

Access the ultrasoft basis for direct augmentation table queries.

Definition at line 59 of file init.hpp.

References ultrasoft_planewave_basis_.

Referenced by q3::PlanewaveWannierCapture::build_ultrasoft(), q3::HubbardStressTensorCalculator::compute(), and init().

Member Data Documentation

◆ active_nonlocal_effective_potential_

UltrasoftPlanewaveEffectivePotential* q3::UltrasoftPlanewaveKohnShamQuantumSystem::active_nonlocal_effective_potential_ = nullptr
protected

Active effective potential pointer. Points to owned_nonlocal_effective_potential_ for snapshots, or to the iterator's member during SCF iterations.

Definition at line 140 of file init.hpp.

Referenced by d_matrix_element(), set_nonlocal_effective_potential(), and set_nonlocal_effective_potential().

◆ owned_nonlocal_effective_potential_

UltrasoftPlanewaveEffectivePotential q3::UltrasoftPlanewaveKohnShamQuantumSystem::owned_nonlocal_effective_potential_
protected

Owned copy of the converged effective D-matrix. Populated only for post-SCF snapshots (via the const-ref overload).

Definition at line 134 of file init.hpp.

Referenced by set_nonlocal_effective_potential().

◆ ultrasoft_planewave_basis_

UltrasoftPlanewaveBasis* q3::UltrasoftPlanewaveKohnShamQuantumSystem::ultrasoft_planewave_basis_ = nullptr
protected

Non-owning pointer to the ultrasoft-typed basis (owned by parent's unique_ptr).

Definition at line 128 of file init.hpp.

Referenced by init(), and ultrasoft_basis().


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