25#ifndef __ATOM_SYMMETRY_CLASS_HPP__
26#define __ATOM_SYMMETRY_CLASS_HPP__
118 void sync_core_charge_density(
mpi::Communicator const& comm__,
int const rank__);
150 RTE_ASSERT(dm__ <= 2);
158 RTE_ASSERT(dm__ <= 2);
164 inline int id()
const
178 return static_cast<int>(
atom_id_.size());
181 inline int atom_id(
int idx)
const
195 for (
int ir = 0; ir < this->atom_type().
num_mt_points(); ir++) {
203 for (
int ir = 0; ir < this->atom_type().
num_mt_points(); ir++) {
208 inline double h_spherical_integral(
int i1,
int i2)
const
213 inline double const& o_radial_integral(
int l,
int order1,
int order2)
const
218 inline void set_o_radial_integral(
int l,
int order1,
int order2,
double oint__)
223 inline double const& o1_radial_integral(
int xi1__,
int xi2__)
const
228 inline void set_o1_radial_integral(
int idxrf1__,
int idxrf2__,
double val__)
233 inline double so_radial_integral(
int l,
int order1,
int order2)
const
238 inline double ae_core_charge_density(
int ir)
const
245 inline Atom_type
const& atom_type()
const
250 inline double core_eval_sum()
const
255 inline double core_leakage()
const
260 inline int num_aw_descriptors()
const
270 inline int num_lo_descriptors()
const
275 inline local_orbital_descriptor& lo_descriptor(
int idx__)
const
280 inline void set_aw_enu(
int l,
int order,
double enu)
285 inline double get_aw_enu(
int l,
int order)
const
290 inline void set_lo_enu(
int idxlo,
int order,
double enu)
295 inline double get_lo_enu(
int idxlo,
int order)
const
Contains declaration and implementation of sirius::Atom_type class.
Data and methods specific to the symmetry class of the atom.
void generate_aw_radial_functions(relativity_t rel__)
Generate radial functions for augmented waves.
void generate_radial_functions(relativity_t rel__)
Generate APW and LO radial functions.
Atom_symmetry_class(int id_, Atom_type const &atom_type_)
Constructor.
void set_spherical_potential(std::vector< double > const &vs__)
Set the spherical component of the potential.
void aw_surface_deriv(int l__, int order__, int dm__, double deriv__)
Set surface derivative of AW radial functions.
std::vector< int > atom_id_
List of atoms of this class.
double core_eval_sum_
Core eigen-value sum.
void generate_lo_radial_functions(relativity_t rel__)
Generate local orbital raidal functions.
void dump_lo()
Dump local orbitals to the file for debug purposes.
Atom_type const & atom_type_
Pointer to atom type.
std::vector< double > ae_core_charge_density_
Core charge density.
std::vector< local_orbital_descriptor > lo_descriptors_
list of radial descriptor sets used to construct local orbitals
void generate_core_charge_density(relativity_t core_rel__)
Find core states and generate core density.
sddk::mdarray< double, 2 > o1_radial_integrals_
Overlap integrals for IORA relativistic treatment.
int id() const
Return symmetry class id.
std::vector< double > spherical_potential_
Spherical part of the effective potential.
double core_leakage_
Core leakage.
void add_atom_id(int atom_id__)
Add atom id to the current class.
void radial_function(int idx__, std::vector< double > f__)
Set radial function.
sddk::mdarray< double, 3 > so_radial_integrals_
Spin-orbit interaction integrals.
void find_enu(relativity_t rel__)
Find linearization energy.
sddk::mdarray< double, 2 > h_spherical_integrals_
Spherical part of radial integral.
sddk::mdarray< double, 3 > o_radial_integrals_
Overlap integrals.
void radial_function_derivative(int idx__, std::vector< double > f__)
Set radial function derivative r*(du/dr).
int id_
Symmetry class id in the range [0, N_class).
sddk::mdarray< double, 3 > radial_functions_
List of radial functions for the LAPW basis.
std::vector< radial_solution_descriptor_set > aw_descriptors_
list of radial descriptor sets used to construct augmented waves
int num_atoms() const
Return number of atoms belonging to the current symmetry class.
sddk::mdarray< double, 2 > surface_derivatives_
Surface derivatives of AW radial functions.
void generate_radial_integrals(relativity_t rel__)
Generate radial overlap and SO integrals.
void orthogonalize_radial_functions()
Orthogonalize the radial functions.
double radial_function(int ir, int idx) const
Get a value of the radial functions.
double aw_surface_deriv(int l__, int order__, int dm__) const
Get m-th order radial derivative of AW functions at the MT surface.
std::vector< int > check_lo_linear_independence(double etol__)
Check if local orbitals are linearly independent.
Defines the properties of atom type.
int num_mt_points() const
Return number of muffin-tin radial grid points.
auto const & indexr() const
Return const reference to the index of radial functions.
Angular momentum quantum number.
MPI communicator wrapper.
Parallel standard output.
Contains definition of eigensolver factory.
Namespace of the SIRIUS library.
relativity_t
Type of relativity treatment in the case of LAPW.
std::vector< radial_solution_descriptor > radial_solution_descriptor_set
Set of radial solution descriptors, used to construct augmented waves or local orbitals.
Contains implementation of the parallel standard output.