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

#include <init.hpp>

Public Member Functions

void build_shells (const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis)
 Precompute the symmetry operations and G-vector shells for the given cell/basis.
 
bool is_initialized () const
 
int number_of_shells () const
 
int number_of_symmetry_operations () const
 
int number_of_systematically_absent_g_vectors () const
 G-vectors whose component a screw axis or glide forbids; zero unless the group is polar.
 
void symmetrize (const PlanewaveBasis &planewave_basis, std::vector< std::vector< Real > > &charge_density_real, int number_of_spin_components) const
 
void symmetrize_from_g_space (const PlanewaveBasis &planewave_basis, std::vector< std::vector< Complex > > &charge_density_g_components, std::vector< std::vector< Real > > &charge_density_real, int number_of_spin_components) const
 Symmetrize the spin-resolved real-space charge density in place.
 

Detailed Description

Definition at line 63 of file init.hpp.

Member Function Documentation

◆ build_shells()

void q3::PlanewaveChargeDensitySymmetrizer::build_shells ( const Crystal &  crystal_structure,
const PlanewaveBasis &  planewave_basis 
)
inline

◆ is_initialized()

bool q3::PlanewaveChargeDensitySymmetrizer::is_initialized ( ) const
inline

◆ number_of_shells()

int q3::PlanewaveChargeDensitySymmetrizer::number_of_shells ( ) const
inline

◆ number_of_symmetry_operations()

int q3::PlanewaveChargeDensitySymmetrizer::number_of_symmetry_operations ( ) const
inline

◆ number_of_systematically_absent_g_vectors()

int q3::PlanewaveChargeDensitySymmetrizer::number_of_systematically_absent_g_vectors ( ) const
inline

G-vectors whose component a screw axis or glide forbids; zero unless the group is polar.

Definition at line 280 of file init.hpp.

◆ symmetrize()

void q3::PlanewaveChargeDensitySymmetrizer::symmetrize ( const PlanewaveBasis &  planewave_basis,
std::vector< std::vector< Real > > &  charge_density_real,
int  number_of_spin_components 
) const
inline

◆ symmetrize_from_g_space()

void q3::PlanewaveChargeDensitySymmetrizer::symmetrize_from_g_space ( const PlanewaveBasis &  planewave_basis,
std::vector< std::vector< Complex > > &  charge_density_g_components,
std::vector< std::vector< Real > > &  charge_density_real,
int  number_of_spin_components 
) const
inline

Symmetrize the spin-resolved real-space charge density in place.

Symmetrize charge density given in G-space and produce both symmetrized G-space and R-space outputs with a single G→R FFT.

This avoids the R→G FFT that the real-space interface would require, saving ~100ms per call for large grids. The caller provides the G-space density (typically available from construct_density_from_states or add_augmentation), and receives the symmetrized G-space density in-place plus the symmetrized R-space density in the output parameter.

Definition at line 173 of file init.hpp.

References number_of_symmetry_operations(), q3::PlanewaveBasis::rho_g_to_r(), and q3::math::tolerances::zero_vector_magnitude_threshold.

Referenced by q3::UltrasoftPlanewavePseudopotentialKohnShamSCFIterator::symmetrize_density().


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