#include <core_correction.hpp>
Public Member Functions | |
| CoreCorrectionStressTensorCalculator (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const NormConservingPlanewaveBasis &pseudopotential_basis, const NormConservingPlanewaveKohnShamSCFState &scf_state, StressTensorContributions &result) | |
| void | compute () |
Definition at line 28 of file core_correction.hpp.
|
inline |
Definition at line 30 of file core_correction.hpp.
|
inline |
S(G) = Σ_I e^{-iG·τ_I}, the same sign the core density itself is built with (core_charge_data.hpp), because this term pairs against that density: Re[V*_xc(G) ρ_core(|G|) S(G)].
With the conjugate sign the pairing is not translation invariant — under τ → τ + t the potential picks up e^{-iG·t} and a same-signed structure factor picks up another, leaving a residual e^{+2iG·t}. Shifting diamond silicon's basis from (0, ¼) to (⅞, ⅛), which is the same crystal, moved the pressure from 5.63 to 571.67 kbar while the total energy agreed to 1e-5 Ry. Only datasets with a partial core charge were affected, which is most PAW datasets and no norm-conserving one without NLCC.
Use analytical derivative from pre-tabulated ρ_core(q) instead of finite-difference with two expensive radial integrals per species.
Definition at line 41 of file core_correction.hpp.
References q3::Crystal::cell_volume(), q3::compute_phase_factor(), q3::Crystal::convert_from_crystal_to_cartesian(), q3::StressTensorContributions::core_correction, q3::PlanewaveKohnShamSCFState::exchange_correlation_potential_g, q3::PlanewaveBasis::first_nonzero_g_index(), q3::PlanewaveBasis::g_vectors(), q3::NormConservingPlanewaveBasis::interpolate_core_charge_density(), q3::NormConservingPlanewaveBasis::interpolate_core_charge_density_derivative(), q3::PlanewaveBasis::is_gamma_only(), q3::Crystal::number_of_atoms(), q3::PlanewaveBasis::number_of_g_vectors(), q3::math::tolerances::numerical_zero_threshold, q3::NormConservingPlanewaveBasis::pseudopotential_set(), q3::PseudopotentialSet::size(), q3::Crystal::species_type_index(), q3::constants::two_pi, q3::Crystal::two_pi_over_lattice_parameter(), and q3::Crystal::two_pi_over_lattice_parameter_squared().
Referenced by q3::NormConservingPlanewaveStressTensorCalculator::compute().