Loading...
Searching...
No Matches
q3::paw_validation Namespace Reference

Functions

Real integrated_all_electron_core_charge (const PawPseudopotential &pseudopotential)
 
bool is_allowed_augmentation_channel (int angular_momentum_1, int angular_momentum_2, int total_angular_momentum)
 
Real nuclear_charge_from_all_electron_potential (const PawPseudopotential &pseudopotential)
 
Real worst_augmentation_charge_deviation (const PawPseudopotential &pseudopotential)
 
Real worst_multipole_moment_deviation (const PawPseudopotential &pseudopotential)
 
Real worst_projector_duality_deviation (const PawPseudopotential &pseudopotential)
 

Function Documentation

◆ integrated_all_electron_core_charge()

Real q3::paw_validation::integrated_all_electron_core_charge ( const PawPseudopotential &  pseudopotential)
inline

Integrated all-electron core charge, 4π ∫ ρ_core(r) r² dr. Equals the number of core electrons the dataset froze out, Z − Z_valence, which is how a caller can confirm the all-electron core density was read on the right grid and with the right normalization without knowing Z beforehand.

Definition at line 159 of file validation.hpp.

References q3::PawPseudopotential::charge_core_all_electron, q3::Pseudopotential::mesh_size, q3::Pseudopotential::radial_grid, q3::Pseudopotential::radial_grid_derivative, q3::ChargeCore::radial_values, and q3::simpson_rule().

◆ is_allowed_augmentation_channel()

bool q3::paw_validation::is_allowed_augmentation_channel ( int  angular_momentum_1,
int  angular_momentum_2,
int  total_angular_momentum 
)
inline

Whether an augmentation channel (l_i, l_j, L) is allowed by the angular-momentum triangle condition. Forbidden channels carry no compensation charge and are stored as exact zeros.

Definition at line 36 of file validation.hpp.

Referenced by worst_multipole_moment_deviation().

◆ nuclear_charge_from_all_electron_potential()

Real q3::paw_validation::nuclear_charge_from_all_electron_potential ( const PawPseudopotential &  pseudopotential)
inline

Nuclear charge implied by the all-electron local potential, read off its Coulomb tail toward the origin: V_AE(r) → −2Z/r in Rydberg units, so −r·V(r)/2 → Z. Evaluated at the innermost grid point, which sits close enough to the origin on a logarithmic mesh to recover Z to a fraction of a percent.

Definition at line 181 of file validation.hpp.

References q3::PawPseudopotential::potential_local_all_electron, q3::Pseudopotential::radial_grid, and q3::PotentialLocal::radial_values.

◆ worst_augmentation_charge_deviation()

Real q3::paw_validation::worst_augmentation_charge_deviation ( const PawPseudopotential &  pseudopotential)
inline

The L = 0 multipole block is the augmentation charge matrix: the monopole of the compensation charge is exactly what the ultrasoft apparatus calls q_ij. Datasets store both, and they must agree.

Definition at line 101 of file validation.hpp.

References q3::UltrasoftPseudopotential::augmentation_overlap_integrals, q3::PawPseudopotential::multipole_moments, and q3::Pseudopotential::number_of_projectors.

◆ worst_multipole_moment_deviation()

Real q3::paw_validation::worst_multipole_moment_deviation ( const PawPseudopotential &  pseudopotential)
inline

Multipole identity: for every triangle-allowed channel,

multipole_moments[L][i][j] = ∫ (φ_i φ_j − φ̃_i φ̃_j) r^L dr

This is the tightest available check that the all-electron partial waves, the pseudo partial waves and the stored moments describe one dataset.

Definition at line 54 of file validation.hpp.

References is_allowed_augmentation_channel(), q3::Pseudopotential::mesh_size, q3::PawPseudopotential::multipole_moments, q3::PawPseudopotential::number_of_augmentation_angular_momenta, q3::Pseudopotential::number_of_projectors, q3::PawPseudopotential::partial_waves_all_electron, q3::PawPseudopotential::partial_waves_pseudo, q3::Pseudopotential::radial_grid, q3::Pseudopotential::radial_grid_derivative, and q3::simpson_rule().

◆ worst_projector_duality_deviation()

Real q3::paw_validation::worst_projector_duality_deviation ( const PawPseudopotential &  pseudopotential)
inline

Projector duality: ⟨p̃_i|φ̃_j⟩ = δ_ij within the same angular-momentum channel. This is the defining property of the PAW projectors — if it fails, the projectors and the pseudo partial waves came from different datasets or were paired up in the wrong order.

Channels with different l are orthogonal by symmetry and carry no information about the radial tabulation, so they are skipped.

Definition at line 127 of file validation.hpp.

References q3::Pseudopotential::mesh_size, q3::Pseudopotential::number_of_projectors, q3::PawPseudopotential::partial_waves_pseudo, q3::Pseudopotential::projectors, q3::Pseudopotential::radial_grid_derivative, and q3::simpson_rule().