ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <unitcell.h>
Public Member Functions | |
template<typename Tiait > | |
Tiait | itiaiw2iwt (const Tiait &it, const Tiait &ia, const Tiait &iw) const |
void | set_iat2iwt (const int &npol_in) |
const int * | get_iat2iwt () const |
const int & | get_npol () const |
template<typename Tiat , typename Tiait > | |
bool | iat2iait (const Tiat iat, Tiait *ia, Tiait *it) const |
template<typename Tiat , typename Tiait > | |
bool | ijat2iaitjajt (const Tiat ijat, Tiait *ia, Tiait *it, Tiait *ja, Tiait *jt) const |
template<typename Tiait > | |
bool | step_it (Tiait *it) const |
template<typename Tiait > | |
bool | step_ia (const Tiait it, Tiait *ia) const |
template<typename Tiait > | |
bool | step_iait (Tiait *ia, Tiait *it) const |
template<typename Tiait > | |
bool | step_jajtiait (Tiait *ja, Tiait *jt, Tiait *ia, Tiait *it) const |
const ModuleBase::Vector3< double > & | get_tau (const int &iat) const |
const ModuleBase::Vector3< double > | cal_dtau (const int &iat1, const int &iat2, const ModuleBase::Vector3< int > &R) const |
UnitCell () | |
~UnitCell () | |
void | print_cell (std::ofstream &ofs) const |
void | set_iat2itia () |
void | setup_cell (const std::string &fn, std::ofstream &log) |
bool | if_atoms_can_move () const |
bool | if_cell_can_change () const |
void | setup (const std::string &latname_in, const int &ntype_in, const int &lmaxmax_in, const bool &init_vel_in, const std::string &fixed_axes_in) |
void | compare_atom_labels (const std::string &label1, const std::string &label2) |
check consistency between two atom labels from STRU and pseudo or orb file | |
std::map< int, int > | get_atom_Counts () const |
get atomCounts, which is a map from element type to atom number | |
std::map< int, int > | get_orbital_Counts () const |
get orbitalCounts, which is a map from element type to orbital number | |
std::map< int, std::map< int, int > > | get_lnchi_Counts () const |
get lnchiCounts, which is a map from element type to the l:nchi map | |
std::vector< std::string > | get_atomLabels () const |
get atom labels | |
std::vector< int > | get_atomCounts () const |
get atomCounts, which is a vector of element type with atom number | |
std::vector< std::vector< int > > | get_lnchiCounts () const |
get lnchiCounts, which is a vector of element type with the l:nchi vector | |
std::vector< ModuleBase::Vector3< double > > | get_target_mag () const |
get target magnetic moment for deltaspin | |
std::vector< ModuleBase::Vector3< double > > | get_lambda () const |
get lagrange multiplier for deltaspin | |
std::vector< ModuleBase::Vector3< int > > | get_constrain () const |
get constrain for deltaspin | |
Public Attributes | |
Atom * | atoms = nullptr |
bool | set_atom_flag = false |
Magnetism | magnet |
std::vector< std::vector< double > > | atom_mulliken |
int | n_mag_at = 0 |
Lattice | lat |
std::string & | Coordinate = lat.Coordinate |
std::string & | latName = lat.latName |
double & | lat0 = lat.lat0 |
double & | lat0_angstrom = lat.lat0_angstrom |
double & | tpiba = lat.tpiba |
double & | tpiba2 = lat.tpiba2 |
double & | omega = lat.omega |
int *& | lc = lat.lc |
ModuleBase::Matrix3 & | latvec = lat.latvec |
ModuleBase::Vector3< double > & | a1 = lat.a1 |
ModuleBase::Vector3< double > & | a2 = lat.a2 |
ModuleBase::Vector3< double > & | a3 = lat.a3 |
ModuleBase::Vector3< double > & | latcenter = lat.latcenter |
ModuleBase::Matrix3 & | latvec_supercell = lat.latvec_supercell |
ModuleBase::Matrix3 & | G = lat.G |
ModuleBase::Matrix3 & | GT = lat.GT |
ModuleBase::Matrix3 & | GGT = lat.GGT |
ModuleBase::Matrix3 & | invGGT = lat.invGGT |
Statistics | st |
int & | ntype = st.ntype |
int & | nat = st.nat |
int *& | iat2it = st.iat2it |
int *& | iat2ia = st.iat2ia |
int *& | iwt2iat = st.iwt2iat |
int *& | iwt2iw = st.iwt2iw |
ModuleBase::IntArray & | itia2iat = st.itia2iat |
int & | namax = st.namax |
int & | nwmax = st.nwmax |
ModuleSymmetry::Symmetry | symm |
ModuleBase::Matrix3 | G0 |
ModuleBase::Matrix3 | GT0 |
ModuleBase::Matrix3 | GGT0 |
ModuleBase::Matrix3 | invGGT0 |
bool | ionic_position_updated = false |
bool | cell_parameter_updated = false |
int | meshx = 0 |
int | natomwfc = 0 |
int | lmax = 0 |
int | nmax = 0 |
int | nmax_total = 0 |
int | lmax_ppwf = 0 |
int | lmaxmax = 0 |
bool | init_vel = false |
std::vector< double > | atom_mass |
std::vector< std::string > | atom_label |
std::vector< std::string > | pseudo_fn |
std::vector< std::string > | pseudo_type |
std::vector< std::string > | orbital_fn |
std::string | descriptor_file |
Private Attributes | |
std::vector< int > | iat2iwt |
int | npol = 1 |
ModuleBase::Matrix3 | stress |
UnitCell::UnitCell | ( | ) |
UnitCell::~UnitCell | ( | ) |
|
inline |
void UnitCell::compare_atom_labels | ( | const std::string & | label1, |
const std::string & | label2 | ||
) |
check consistency between two atom labels from STRU and pseudo or orb file
std::map< int, int > UnitCell::get_atom_Counts | ( | ) | const |
get atomCounts, which is a map from element type to atom number
std::vector< int > UnitCell::get_atomCounts | ( | ) | const |
get atomCounts, which is a vector of element type with atom number
std::vector< std::string > UnitCell::get_atomLabels | ( | ) | const |
get atom labels
these are newly added functions, the three above functions are deprecated and will be removed in the future
std::vector< ModuleBase::Vector3< int > > UnitCell::get_constrain | ( | ) | const |
get constrain for deltaspin
|
inline |
std::vector< ModuleBase::Vector3< double > > UnitCell::get_lambda | ( | ) | const |
get lagrange multiplier for deltaspin
std::map< int, std::map< int, int > > UnitCell::get_lnchi_Counts | ( | ) | const |
get lnchiCounts, which is a map from element type to the l:nchi map
std::vector< std::vector< int > > UnitCell::get_lnchiCounts | ( | ) | const |
get lnchiCounts, which is a vector of element type with the l:nchi vector
|
inline |
std::map< int, int > UnitCell::get_orbital_Counts | ( | ) | const |
get orbitalCounts, which is a map from element type to orbital number
std::vector< ModuleBase::Vector3< double > > UnitCell::get_target_mag | ( | ) | const |
get target magnetic moment for deltaspin
|
inline |
|
inline |
bool UnitCell::if_atoms_can_move | ( | ) | const |
bool UnitCell::if_cell_can_change | ( | ) | const |
|
inline |
|
inline |
void UnitCell::print_cell | ( | std::ofstream & | ofs | ) | const |
void UnitCell::set_iat2itia | ( | ) |
void UnitCell::set_iat2iwt | ( | const int & | npol_in | ) |
void UnitCell::setup | ( | const std::string & | latname_in, |
const int & | ntype_in, | ||
const int & | lmaxmax_in, | ||
const bool & | init_vel_in, | ||
const std::string & | fixed_axes_in | ||
) |
void UnitCell::setup_cell | ( | const std::string & | fn, |
std::ofstream & | log | ||
) |
|
inline |
|
inline |
|
inline |
|
inline |
ModuleBase::Vector3<double>& UnitCell::a1 = lat.a1 |
ModuleBase::Vector3<double> & UnitCell::a2 = lat.a2 |
ModuleBase::Vector3<double> & UnitCell::a3 = lat.a3 |
std::vector<std::string> UnitCell::atom_label |
std::vector<double> UnitCell::atom_mass |
std::vector<std::vector<double> > UnitCell::atom_mulliken |
Atom* UnitCell::atoms = nullptr |
bool UnitCell::cell_parameter_updated = false |
std::string& UnitCell::Coordinate = lat.Coordinate |
std::string UnitCell::descriptor_file |
ModuleBase::Matrix3& UnitCell::G = lat.G |
ModuleBase::Matrix3 UnitCell::G0 |
ModuleBase::Matrix3& UnitCell::GGT = lat.GGT |
ModuleBase::Matrix3 UnitCell::GGT0 |
ModuleBase::Matrix3& UnitCell::GT = lat.GT |
ModuleBase::Matrix3 UnitCell::GT0 |
int*& UnitCell::iat2ia = st.iat2ia |
int*& UnitCell::iat2it = st.iat2it |
|
private |
bool UnitCell::init_vel = false |
ModuleBase::Matrix3& UnitCell::invGGT = lat.invGGT |
ModuleBase::Matrix3 UnitCell::invGGT0 |
bool UnitCell::ionic_position_updated = false |
ModuleBase::IntArray& UnitCell::itia2iat = st.itia2iat |
int*& UnitCell::iwt2iat = st.iwt2iat |
int*& UnitCell::iwt2iw = st.iwt2iw |
Lattice UnitCell::lat |
double& UnitCell::lat0 = lat.lat0 |
double& UnitCell::lat0_angstrom = lat.lat0_angstrom |
ModuleBase::Vector3<double>& UnitCell::latcenter = lat.latcenter |
std::string& UnitCell::latName = lat.latName |
ModuleBase::Matrix3& UnitCell::latvec = lat.latvec |
ModuleBase::Matrix3& UnitCell::latvec_supercell = lat.latvec_supercell |
int*& UnitCell::lc = lat.lc |
int UnitCell::lmax = 0 |
int UnitCell::lmax_ppwf = 0 |
int UnitCell::lmaxmax = 0 |
Magnetism UnitCell::magnet |
int UnitCell::meshx = 0 |
int UnitCell::n_mag_at = 0 |
int& UnitCell::namax = st.namax |
int& UnitCell::nat = st.nat |
int UnitCell::natomwfc = 0 |
int UnitCell::nmax = 0 |
int UnitCell::nmax_total = 0 |
|
private |
int& UnitCell::ntype = st.ntype |
int& UnitCell::nwmax = st.nwmax |
double& UnitCell::omega = lat.omega |
std::vector<std::string> UnitCell::orbital_fn |
std::vector<std::string> UnitCell::pseudo_fn |
std::vector<std::string> UnitCell::pseudo_type |
bool UnitCell::set_atom_flag = false |
Statistics UnitCell::st |
|
private |
ModuleSymmetry::Symmetry UnitCell::symm |
double& UnitCell::tpiba = lat.tpiba |
double& UnitCell::tpiba2 = lat.tpiba2 |