#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} |
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).
|
default |
|
overridedefault |
|
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().
|
inlineoverridevirtual |
This quantum system uses ultrasoft pseudopotentials.
Reimplemented from q3::NormConservingPlanewaveKohnShamQuantumSystem.
|
inlineoverridevirtual |
Initialize by creating and populating the internal PP basis.
Reimplemented from q3::NormConservingPlanewaveKohnShamQuantumSystem.
Definition at line 46 of file init.hpp.
References q3::PlanewaveKohnShamQuantumSystem::basis_, q3::QuantumSystem< QuantumStateType >::crystal_structure, q3::UltrasoftPlanewaveBasis::init(), q3::NormConservingPlanewaveKohnShamQuantumSystem::norm_conserving_basis_, ultrasoft_basis(), and ultrasoft_planewave_basis_.
|
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.
|
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().
|
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_.
|
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().
|
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().
|
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().
|
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().