SIRIUS 7.5.0
Electronic structure library and applications
|
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_set & | aw_descriptor (int idx__) const |
int | num_lo_descriptors () const |
local_orbital_descriptor & | lo_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_set > | aw_descriptors_ |
list of radial descriptor sets used to construct augmented waves More... | |
std::vector< local_orbital_descriptor > | lo_descriptors_ |
list of radial descriptor sets used to construct local orbitals More... | |
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.
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.
|
private |
Generate radial functions for augmented waves.
Definition at line 74 of file atom_symmetry_class.cpp.
|
private |
Generate local orbital raidal functions.
Definition at line 170 of file atom_symmetry_class.cpp.
|
private |
Orthogonalize the radial functions.
Definition at line 299 of file atom_symmetry_class.cpp.
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.
Definition at line 469 of file atom_symmetry_class.cpp.
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.
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.
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.
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.
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.
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.
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.
void sirius::Atom_symmetry_class::find_enu | ( | relativity_t | rel__ | ) |
Find linearization energy.
Definition at line 493 of file atom_symmetry_class.cpp.
void sirius::Atom_symmetry_class::write_enu | ( | mpi::pstdout & | pout | ) | const |
Definition at line 730 of file atom_symmetry_class.cpp.
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.
|
inline |
Get m-th order radial derivative of AW functions at the MT surface.
Definition at line 148 of file atom_symmetry_class.hpp.
|
inline |
Set surface derivative of AW radial functions.
Definition at line 156 of file atom_symmetry_class.hpp.
|
inline |
Return symmetry class id.
Definition at line 164 of file atom_symmetry_class.hpp.
|
inline |
Add atom id to the current class.
Definition at line 170 of file atom_symmetry_class.hpp.
|
inline |
Return number of atoms belonging to the current symmetry class.
Definition at line 176 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 181 of file atom_symmetry_class.hpp.
|
inline |
Get a value of the radial functions.
Definition at line 187 of file atom_symmetry_class.hpp.
|
inline |
Set radial function.
Definition at line 193 of file atom_symmetry_class.hpp.
|
inline |
Set radial function derivative r*(du/dr).
Definition at line 201 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 208 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 213 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 218 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 223 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 228 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 233 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 238 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 245 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 250 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 255 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 260 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 265 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 270 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 275 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 280 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 285 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 290 of file atom_symmetry_class.hpp.
|
inline |
Definition at line 295 of file atom_symmetry_class.hpp.
|
private |
Symmetry class id in the range [0, N_class).
Definition at line 42 of file atom_symmetry_class.hpp.
|
private |
List of atoms of this class.
Definition at line 45 of file atom_symmetry_class.hpp.
|
private |
Pointer to atom type.
Definition at line 48 of file atom_symmetry_class.hpp.
|
private |
Spherical part of the effective potential.
Used by the LAPW radial solver.
Definition at line 52 of file atom_symmetry_class.hpp.
|
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.
|
private |
Surface derivatives of AW radial functions.
Definition at line 63 of file atom_symmetry_class.hpp.
|
private |
Spherical part of radial integral.
Definition at line 66 of file atom_symmetry_class.hpp.
|
private |
Overlap integrals.
Definition at line 69 of file atom_symmetry_class.hpp.
|
private |
Overlap integrals for IORA relativistic treatment.
Definition at line 72 of file atom_symmetry_class.hpp.
|
private |
Spin-orbit interaction integrals.
Definition at line 75 of file atom_symmetry_class.hpp.
|
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.
|
private |
Core eigen-value sum.
Definition at line 83 of file atom_symmetry_class.hpp.
|
private |
Core leakage.
Definition at line 86 of file atom_symmetry_class.hpp.
|
mutableprivate |
list of radial descriptor sets used to construct augmented waves
Definition at line 89 of file atom_symmetry_class.hpp.
|
mutableprivate |
list of radial descriptor sets used to construct local orbitals
Definition at line 92 of file atom_symmetry_class.hpp.