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

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

Detailed Description

Definition at line 28 of file core_correction.hpp.

Constructor & Destructor Documentation

◆ CoreCorrectionStressTensorCalculator()

q3::CoreCorrectionStressTensorCalculator::CoreCorrectionStressTensorCalculator ( const Crystal &  crystal_structure,
const PlanewaveBasis &  planewave_basis,
const NormConservingPlanewaveBasis &  pseudopotential_basis,
const NormConservingPlanewaveKohnShamSCFState &  scf_state,
StressTensorContributions &  result 
)
inline

Definition at line 30 of file core_correction.hpp.

Member Function Documentation

◆ compute()

void q3::CoreCorrectionStressTensorCalculator::compute ( )
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().


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