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