30 public FFTransformable<SpinResolvedPotentialGrid, PotentialReciprocalCoefficients> {
43 exchange_correlation_reciprocal_space_data_.resize(number_of_g_vectors,
Complex(0.0, 0.0));
62 std::vector<Real> total_potential(grid_points, 0.0);
64 for (
int grid_point_index = 0; grid_point_index < grid_points; grid_point_index++) {
65 total_potential[grid_point_index] +=
80 return exchange_correlation_reciprocal_space_data_;
83 return exchange_correlation_reciprocal_space_data_;
88 return kinetic_potential_data_;
91 return kinetic_potential_data_;
97 kinetic_potential_data_[spin_index].assign(grid_points, 0.0);
108 return charge_density_reciprocal_;
111 return charge_density_reciprocal_;
124 log::info(
" Effective potential summary:");
133 std::vector<Complex> exchange_correlation_reciprocal_space_data_;
134 std::vector<std::vector<Real>> kinetic_potential_data_;
135 std::vector<Complex> charge_density_reciprocal_;
Abstract effective potential — the self-consistent field acting on electrons.
virtual int total_grid_points() const =0
int number_of_g_vectors() const
void rho_g_to_r(const std::vector< Complex > &charge_density_g_space, std::vector< Real > &charge_density_real_space) const
void rho_r_to_g(const std::vector< Real > &charge_density_real_space, std::vector< Complex > &charge_density_g_space) const
Planewave effective potential — stores V(r) on FFT grid.
PlanewaveEffectivePotential(const PlanewaveBasis &basis, int number_of_spin_components)
Real exchange_correlation_potential_energy
void to_real_space() override
void to_reciprocal_space() override
std::vector< Real > & real_space_by_spin_index(int spin_index)
const PlanewaveBasis & basis() const
const std::vector< Real > & real_space_by_spin_index(int spin_index) const
PlanewaveEffectivePotential()=default
const std::vector< std::vector< Real > > & kinetic_potential_data() const
Real exchange_correlation_energy
std::vector< std::vector< Real > > & kinetic_potential_data()
std::vector< Complex > & exchange_correlation_reciprocal_space_data()
const std::vector< Complex > & charge_density_reciprocal() const
const std::vector< Complex > & exchange_correlation_reciprocal_space_data() const
std::vector< Complex > & charge_density_reciprocal()
void initialize_kinetic_potential()
int number_of_spin_components() const
int number_of_spin_components_
void info(spdlog::format_string_t< Args... > fmt, Args &&... args)
std::vector< Complex > PotentialReciprocalCoefficients
std::vector< std::vector< Real > > SpinResolvedPotentialGrid
Type aliases for potential storage.
std::complex< double > Complex