SIRIUS 7.5.0
Electronic structure library and applications
Public Member Functions | Private Member Functions | Private Attributes | List of all members
sirius::Atom_symmetry_class Class Reference

Data and methods specific to the symmetry class of the atom. More...

#include <atom_symmetry_class.hpp>

Public Member Functions

 Atom_symmetry_class (int id_, Atom_type const &atom_type_)
 Constructor. More...
 
void set_spherical_potential (std::vector< double > const &vs__)
 Set the spherical component of the potential. More...
 
void generate_radial_functions (relativity_t rel__)
 Generate APW and LO radial functions. More...
 
void sync_radial_functions (mpi::Communicator const &comm__, int const rank__)
 
void sync_radial_integrals (mpi::Communicator const &comm__, int const rank__)
 
void sync_core_charge_density (mpi::Communicator const &comm__, int const rank__)
 
std::vector< int > check_lo_linear_independence (double etol__)
 Check if local orbitals are linearly independent. More...
 
void dump_lo ()
 Dump local orbitals to the file for debug purposes. More...
 
void generate_core_charge_density (relativity_t core_rel__)
 Find core states and generate core density. More...
 
void find_enu (relativity_t rel__)
 Find linearization energy. More...
 
void write_enu (mpi::pstdout &pout) const
 
void generate_radial_integrals (relativity_t rel__)
 Generate radial overlap and SO integrals. More...
 
double aw_surface_deriv (int l__, int order__, int dm__) const
 Get m-th order radial derivative of AW functions at the MT surface. More...
 
void aw_surface_deriv (int l__, int order__, int dm__, double deriv__)
 Set surface derivative of AW radial functions. More...
 
int id () const
 Return symmetry class id. More...
 
void add_atom_id (int atom_id__)
 Add atom id to the current class. More...
 
int num_atoms () const
 Return number of atoms belonging to the current symmetry class. More...
 
int atom_id (int idx) const
 
double radial_function (int ir, int idx) const
 Get a value of the radial functions. More...
 
void radial_function (int idx__, std::vector< double > f__)
 Set radial function. More...
 
void radial_function_derivative (int idx__, std::vector< double > f__)
 Set radial function derivative r*(du/dr). More...
 
double h_spherical_integral (int i1, int i2) const
 
double const & o_radial_integral (int l, int order1, int order2) const
 
void set_o_radial_integral (int l, int order1, int order2, double oint__)
 
double const & o1_radial_integral (int xi1__, int xi2__) const
 
void set_o1_radial_integral (int idxrf1__, int idxrf2__, double val__)
 
double so_radial_integral (int l, int order1, int order2) const
 
double ae_core_charge_density (int ir) const
 
Atom_type const & atom_type () const
 
double core_eval_sum () const
 
double core_leakage () const
 
int num_aw_descriptors () const
 
radial_solution_descriptor_setaw_descriptor (int idx__) const
 
int num_lo_descriptors () const
 
local_orbital_descriptorlo_descriptor (int idx__) const
 
void set_aw_enu (int l, int order, double enu)
 
double get_aw_enu (int l, int order) const
 
void set_lo_enu (int idxlo, int order, double enu)
 
double get_lo_enu (int idxlo, int order) const
 

Private Member Functions

void generate_aw_radial_functions (relativity_t rel__)
 Generate radial functions for augmented waves. More...
 
void generate_lo_radial_functions (relativity_t rel__)
 Generate local orbital raidal functions. More...
 
void orthogonalize_radial_functions ()
 Orthogonalize the radial functions. More...
 

Private Attributes

int id_
 Symmetry class id in the range [0, N_class). More...
 
std::vector< int > atom_id_
 List of atoms of this class. More...
 
Atom_type const & atom_type_
 Pointer to atom type. More...
 
std::vector< double > spherical_potential_
 Spherical part of the effective potential. More...
 
sddk::mdarray< double, 3 > radial_functions_
 List of radial functions for the LAPW basis. More...
 
sddk::mdarray< double, 2 > surface_derivatives_
 Surface derivatives of AW radial functions. More...
 
sddk::mdarray< double, 2 > h_spherical_integrals_
 Spherical part of radial integral. More...
 
sddk::mdarray< double, 3 > o_radial_integrals_
 Overlap integrals. More...
 
sddk::mdarray< double, 2 > o1_radial_integrals_
 Overlap integrals for IORA relativistic treatment. More...
 
sddk::mdarray< double, 3 > so_radial_integrals_
 Spin-orbit interaction integrals. More...
 
std::vector< double > ae_core_charge_density_
 Core charge density. More...
 
double core_eval_sum_ {0}
 Core eigen-value sum. More...
 
double core_leakage_ {0}
 Core leakage. More...
 
std::vector< radial_solution_descriptor_setaw_descriptors_
 list of radial descriptor sets used to construct augmented waves More...
 
std::vector< local_orbital_descriptorlo_descriptors_
 list of radial descriptor sets used to construct local orbitals More...
 

Detailed Description

Data and methods specific to the symmetry class of the atom.

Atoms transforming into each other under symmetry opeartions belong to the same symmetry class. They have the same spherical part of the on-site potential and, as a consequence, the same radial functions.

Definition at line 38 of file atom_symmetry_class.hpp.

Constructor & Destructor Documentation

◆ Atom_symmetry_class()

sirius::Atom_symmetry_class::Atom_symmetry_class ( int  id_,
Atom_type const &  atom_type_ 
)

Constructor.

Definition at line 30 of file atom_symmetry_class.cpp.

Member Function Documentation

◆ generate_aw_radial_functions()

void sirius::Atom_symmetry_class::generate_aw_radial_functions ( relativity_t  rel__)
private

Generate radial functions for augmented waves.

Definition at line 74 of file atom_symmetry_class.cpp.

◆ generate_lo_radial_functions()

void sirius::Atom_symmetry_class::generate_lo_radial_functions ( relativity_t  rel__)
private

Generate local orbital raidal functions.

Definition at line 170 of file atom_symmetry_class.cpp.

◆ orthogonalize_radial_functions()

void sirius::Atom_symmetry_class::orthogonalize_radial_functions ( )
private

Orthogonalize the radial functions.

Definition at line 299 of file atom_symmetry_class.cpp.

◆ set_spherical_potential()

void sirius::Atom_symmetry_class::set_spherical_potential ( std::vector< double > const &  vs__)

Set the spherical component of the potential.

Atoms belonging to the same symmetry class have the same spherical potential.

  • write spherical potential *‍/

Definition at line 469 of file atom_symmetry_class.cpp.

◆ generate_radial_functions()

void sirius::Atom_symmetry_class::generate_radial_functions ( relativity_t  rel__)

Generate APW and LO radial functions.

Definition at line 537 of file atom_symmetry_class.cpp.

◆ sync_radial_functions()

void sirius::Atom_symmetry_class::sync_radial_functions ( mpi::Communicator const &  comm__,
int const  rank__ 
)

Definition at line 574 of file atom_symmetry_class.cpp.

◆ sync_radial_integrals()

void sirius::Atom_symmetry_class::sync_radial_integrals ( mpi::Communicator const &  comm__,
int const  rank__ 
)

Definition at line 584 of file atom_symmetry_class.cpp.

◆ sync_core_charge_density()

void sirius::Atom_symmetry_class::sync_core_charge_density ( mpi::Communicator const &  comm__,
int const  rank__ 
)

Definition at line 595 of file atom_symmetry_class.cpp.

◆ check_lo_linear_independence()

std::vector< int > sirius::Atom_symmetry_class::check_lo_linear_independence ( double  etol__)

Check if local orbitals are linearly independent.

Definition at line 351 of file atom_symmetry_class.cpp.

◆ dump_lo()

void sirius::Atom_symmetry_class::dump_lo ( )

Dump local orbitals to the file for debug purposes.

Definition at line 437 of file atom_symmetry_class.cpp.

◆ generate_core_charge_density()

void sirius::Atom_symmetry_class::generate_core_charge_density ( relativity_t  core_rel__)

Find core states and generate core density.

Definition at line 765 of file atom_symmetry_class.cpp.

◆ find_enu()

void sirius::Atom_symmetry_class::find_enu ( relativity_t  rel__)

Find linearization energy.

Definition at line 493 of file atom_symmetry_class.cpp.

◆ write_enu()

void sirius::Atom_symmetry_class::write_enu ( mpi::pstdout pout) const

Definition at line 730 of file atom_symmetry_class.cpp.

◆ generate_radial_integrals()

void sirius::Atom_symmetry_class::generate_radial_integrals ( relativity_t  rel__)

Generate radial overlap and SO integrals.

In the case of spin-orbit interaction the following integrals are computed:

\[ \int f_{p}(r) \Big( \frac{1}{(2 M c)^2} \frac{1}{r} \frac{d V}{d r} \Big) f_{p'}(r) r^2 dr \]

Relativistic mass M is defined as

\[ M = 1 - \frac{1}{2 c^2} V \]

Definition at line 605 of file atom_symmetry_class.cpp.

◆ aw_surface_deriv() [1/2]

double sirius::Atom_symmetry_class::aw_surface_deriv ( int  l__,
int  order__,
int  dm__ 
) const
inline

Get m-th order radial derivative of AW functions at the MT surface.

Definition at line 148 of file atom_symmetry_class.hpp.

◆ aw_surface_deriv() [2/2]

void sirius::Atom_symmetry_class::aw_surface_deriv ( int  l__,
int  order__,
int  dm__,
double  deriv__ 
)
inline

Set surface derivative of AW radial functions.

Definition at line 156 of file atom_symmetry_class.hpp.

◆ id()

int sirius::Atom_symmetry_class::id ( ) const
inline

Return symmetry class id.

Definition at line 164 of file atom_symmetry_class.hpp.

◆ add_atom_id()

void sirius::Atom_symmetry_class::add_atom_id ( int  atom_id__)
inline

Add atom id to the current class.

Definition at line 170 of file atom_symmetry_class.hpp.

◆ num_atoms()

int sirius::Atom_symmetry_class::num_atoms ( ) const
inline

Return number of atoms belonging to the current symmetry class.

Definition at line 176 of file atom_symmetry_class.hpp.

◆ atom_id()

int sirius::Atom_symmetry_class::atom_id ( int  idx) const
inline

Definition at line 181 of file atom_symmetry_class.hpp.

◆ radial_function() [1/2]

double sirius::Atom_symmetry_class::radial_function ( int  ir,
int  idx 
) const
inline

Get a value of the radial functions.

Definition at line 187 of file atom_symmetry_class.hpp.

◆ radial_function() [2/2]

void sirius::Atom_symmetry_class::radial_function ( int  idx__,
std::vector< double >  f__ 
)
inline

Set radial function.

Definition at line 193 of file atom_symmetry_class.hpp.

◆ radial_function_derivative()

void sirius::Atom_symmetry_class::radial_function_derivative ( int  idx__,
std::vector< double >  f__ 
)
inline

Set radial function derivative r*(du/dr).

Definition at line 201 of file atom_symmetry_class.hpp.

◆ h_spherical_integral()

double sirius::Atom_symmetry_class::h_spherical_integral ( int  i1,
int  i2 
) const
inline

Definition at line 208 of file atom_symmetry_class.hpp.

◆ o_radial_integral()

double const & sirius::Atom_symmetry_class::o_radial_integral ( int  l,
int  order1,
int  order2 
) const
inline

Definition at line 213 of file atom_symmetry_class.hpp.

◆ set_o_radial_integral()

void sirius::Atom_symmetry_class::set_o_radial_integral ( int  l,
int  order1,
int  order2,
double  oint__ 
)
inline

Definition at line 218 of file atom_symmetry_class.hpp.

◆ o1_radial_integral()

double const & sirius::Atom_symmetry_class::o1_radial_integral ( int  xi1__,
int  xi2__ 
) const
inline

Definition at line 223 of file atom_symmetry_class.hpp.

◆ set_o1_radial_integral()

void sirius::Atom_symmetry_class::set_o1_radial_integral ( int  idxrf1__,
int  idxrf2__,
double  val__ 
)
inline

Definition at line 228 of file atom_symmetry_class.hpp.

◆ so_radial_integral()

double sirius::Atom_symmetry_class::so_radial_integral ( int  l,
int  order1,
int  order2 
) const
inline

Definition at line 233 of file atom_symmetry_class.hpp.

◆ ae_core_charge_density()

double sirius::Atom_symmetry_class::ae_core_charge_density ( int  ir) const
inline

Definition at line 238 of file atom_symmetry_class.hpp.

◆ atom_type()

Atom_type const & sirius::Atom_symmetry_class::atom_type ( ) const
inline

Definition at line 245 of file atom_symmetry_class.hpp.

◆ core_eval_sum()

double sirius::Atom_symmetry_class::core_eval_sum ( ) const
inline

Definition at line 250 of file atom_symmetry_class.hpp.

◆ core_leakage()

double sirius::Atom_symmetry_class::core_leakage ( ) const
inline

Definition at line 255 of file atom_symmetry_class.hpp.

◆ num_aw_descriptors()

int sirius::Atom_symmetry_class::num_aw_descriptors ( ) const
inline

Definition at line 260 of file atom_symmetry_class.hpp.

◆ aw_descriptor()

radial_solution_descriptor_set & sirius::Atom_symmetry_class::aw_descriptor ( int  idx__) const
inline

Definition at line 265 of file atom_symmetry_class.hpp.

◆ num_lo_descriptors()

int sirius::Atom_symmetry_class::num_lo_descriptors ( ) const
inline

Definition at line 270 of file atom_symmetry_class.hpp.

◆ lo_descriptor()

local_orbital_descriptor & sirius::Atom_symmetry_class::lo_descriptor ( int  idx__) const
inline

Definition at line 275 of file atom_symmetry_class.hpp.

◆ set_aw_enu()

void sirius::Atom_symmetry_class::set_aw_enu ( int  l,
int  order,
double  enu 
)
inline

Definition at line 280 of file atom_symmetry_class.hpp.

◆ get_aw_enu()

double sirius::Atom_symmetry_class::get_aw_enu ( int  l,
int  order 
) const
inline

Definition at line 285 of file atom_symmetry_class.hpp.

◆ set_lo_enu()

void sirius::Atom_symmetry_class::set_lo_enu ( int  idxlo,
int  order,
double  enu 
)
inline

Definition at line 290 of file atom_symmetry_class.hpp.

◆ get_lo_enu()

double sirius::Atom_symmetry_class::get_lo_enu ( int  idxlo,
int  order 
) const
inline

Definition at line 295 of file atom_symmetry_class.hpp.

Member Data Documentation

◆ id_

int sirius::Atom_symmetry_class::id_
private

Symmetry class id in the range [0, N_class).

Definition at line 42 of file atom_symmetry_class.hpp.

◆ atom_id_

std::vector<int> sirius::Atom_symmetry_class::atom_id_
private

List of atoms of this class.

Definition at line 45 of file atom_symmetry_class.hpp.

◆ atom_type_

Atom_type const& sirius::Atom_symmetry_class::atom_type_
private

Pointer to atom type.

Definition at line 48 of file atom_symmetry_class.hpp.

◆ spherical_potential_

std::vector<double> sirius::Atom_symmetry_class::spherical_potential_
private

Spherical part of the effective potential.

Used by the LAPW radial solver.

Definition at line 52 of file atom_symmetry_class.hpp.

◆ radial_functions_

sddk::mdarray<double, 3> sirius::Atom_symmetry_class::radial_functions_
private

List of radial functions for the LAPW basis.

This array stores all the radial functions (AW and LO) and their derivatives. Radial derivatives of functions are multiplied by \( x \).
1-st dimension: index of radial point
2-nd dimension: index of radial function
3-nd dimension: 0 - function itself, 1 - radial derivative r*(du/dr)

Definition at line 60 of file atom_symmetry_class.hpp.

◆ surface_derivatives_

sddk::mdarray<double, 2> sirius::Atom_symmetry_class::surface_derivatives_
private

Surface derivatives of AW radial functions.

Definition at line 63 of file atom_symmetry_class.hpp.

◆ h_spherical_integrals_

sddk::mdarray<double, 2> sirius::Atom_symmetry_class::h_spherical_integrals_
private

Spherical part of radial integral.

Definition at line 66 of file atom_symmetry_class.hpp.

◆ o_radial_integrals_

sddk::mdarray<double, 3> sirius::Atom_symmetry_class::o_radial_integrals_
private

Overlap integrals.

Definition at line 69 of file atom_symmetry_class.hpp.

◆ o1_radial_integrals_

sddk::mdarray<double, 2> sirius::Atom_symmetry_class::o1_radial_integrals_
private

Overlap integrals for IORA relativistic treatment.

Definition at line 72 of file atom_symmetry_class.hpp.

◆ so_radial_integrals_

sddk::mdarray<double, 3> sirius::Atom_symmetry_class::so_radial_integrals_
private

Spin-orbit interaction integrals.

Definition at line 75 of file atom_symmetry_class.hpp.

◆ ae_core_charge_density_

std::vector<double> sirius::Atom_symmetry_class::ae_core_charge_density_
private

Core charge density.

All-electron core charge density of the LAPW method. It is recomputed on every SCF iteration due to the change of effective potential.

Definition at line 80 of file atom_symmetry_class.hpp.

◆ core_eval_sum_

double sirius::Atom_symmetry_class::core_eval_sum_ {0}
private

Core eigen-value sum.

Definition at line 83 of file atom_symmetry_class.hpp.

◆ core_leakage_

double sirius::Atom_symmetry_class::core_leakage_ {0}
private

Core leakage.

Definition at line 86 of file atom_symmetry_class.hpp.

◆ aw_descriptors_

std::vector<radial_solution_descriptor_set> sirius::Atom_symmetry_class::aw_descriptors_
mutableprivate

list of radial descriptor sets used to construct augmented waves

Definition at line 89 of file atom_symmetry_class.hpp.

◆ lo_descriptors_

std::vector<local_orbital_descriptor> sirius::Atom_symmetry_class::lo_descriptors_
mutableprivate

list of radial descriptor sets used to construct local orbitals

Definition at line 92 of file atom_symmetry_class.hpp.


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