Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
q3::LocalPseudopotentialForceCalculator Class Reference

#include <local.hpp>

Public Member Functions

 LocalPseudopotentialForceCalculator (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const NormConservingPlanewaveBasis &pseudopotential_basis)
 
std::vector< Vector3D > compute (const std::vector< Complex > &charge_density_g)
 

Detailed Description

Definition at line 24 of file local.hpp.

Constructor & Destructor Documentation

◆ LocalPseudopotentialForceCalculator()

q3::LocalPseudopotentialForceCalculator::LocalPseudopotentialForceCalculator ( const Crystal &  crystal_structure,
const PlanewaveBasis &  planewave_basis,
const NormConservingPlanewaveBasis &  pseudopotential_basis 
)
inline

Definition at line 26 of file local.hpp.

Member Function Documentation

◆ compute()

std::vector< Vector3D > q3::LocalPseudopotentialForceCalculator::compute ( const std::vector< Complex > &  charge_density_g)
inline

Gamma-only stores only the positive half sphere, and this summand is even under G -> -G (the imaginary part is odd and G_alpha is odd), so the omitted half contributes as much again. Verified against QE's own force decomposition at Gamma (‘verbosity='high’`), where Q3 was exactly half.

F_{α,na} = Ω · G_α · Im[ V_loc(G) · ρ(G) · e^{+iGτ} ] (full sphere) Full-sphere sum over both G and -G: the -G term contributes the same as G, so no extra factor of 2 needed (it's already implicit in summing all G).

Definition at line 33 of file local.hpp.

References q3::Crystal::cell_volume(), q3::Crystal::convert_from_crystal_to_cartesian(), q3::PlanewaveBasis::first_nonzero_g_index(), q3::PlanewaveBasis::g_vectors(), q3::PlanewaveBasis::is_gamma_only(), q3::NormConservingPlanewaveBasis::local_potential_g(), q3::Crystal::number_of_atoms(), q3::PlanewaveBasis::number_of_g_vectors(), q3::Crystal::species_type_index(), q3::constants::two_pi, and q3::Crystal::two_pi_over_lattice_parameter().

Referenced by q3::NormConservingPlanewaveForceCalculator::compute().


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