58 std::vector<ModuleBase::Vector3<double>>
ptrans;
95 double* celconst)
const;
106 std::string& bravname,
109 double*
newpos =
nullptr)
const;
113 std::ofstream& ofs_running,
134 void rho_symmetry(
double *rho,
const int &nr1,
const int &nr2,
const int &nr3);
136 void rhog_symmetry(std::complex<double> *rhogtot,
int* ixyz2ipw,
const int &nx,
137 const int &ny,
const int &nz,
const int & fftnx,
const int &fftny,
const int &fftnz);
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
3 elements vector
Definition vector3.h:24
Definition symmetry_basic.h:14
double epsilon
the precision of symmetry operation
Definition symmetry_basic.h:20
void hermite_normal_form(const ModuleBase::Matrix3 &s, ModuleBase::Matrix3 &H, ModuleBase::Matrix3 &b) const
Definition symm_hermite.cpp:4
bool checksym(const ModuleBase::Matrix3 &s, ModuleBase::Vector3< double > >rans, double *pos, double *rotpos, int *index, const int itmin_type, const int ntype, const int itmin_start, int *istart, int *na) const
Definition symm_check.cpp:4
int nrot
Definition symmetry.h:79
double pcel_const[6]
Definition symmetry.h:63
ModuleBase::Vector3< double > p2
Definition symmetry.h:43
void getgroup(int &nrot, int &nrotk, std::ofstream &ofs_running, const int &nop, const ModuleBase::Matrix3 *symop, ModuleBase::Matrix3 *gmatrix, ModuleBase::Vector3< double > *gtrans, double *pos, double *rotpos, int *index, const int ntype, const int itmin_type, const int itmin_start, int *istart, int *na) const
Definition symm_getgroup.cpp:4
ModuleBase::Matrix3 kgmatrix[48]
Definition symmetry.h:74
void gtrans_convert(const ModuleBase::Vector3< double > *va, ModuleBase::Vector3< double > *vb, const int n, const ModuleBase::Matrix3 &a, const ModuleBase::Matrix3 &b) const
Definition symmetry.cpp:168
ModuleBase::Vector3< double > a3
Definition symmetry.h:42
int * index
Definition symmetry.h:60
std::vector< ModuleBase::Vector3< double > > ptrans
Definition symmetry.h:58
void rho_symmetry(double *rho, const int &nr1, const int &nr2, const int &nr3)
Definition symm_rho.cpp:7
int get_rotated_atom(int isym, int iat) const
Definition symmetry.h:160
ModuleBase::Vector3< double > a2
Definition symmetry.h:42
void analyze_magnetic_group(const Atom *atoms, const Statistics &st, int &nrot_out, int &nrotk_out)
Definition symm_magnetic.cpp:6
Symmetry()
Definition symmetry.h:19
void set_atom_map(const Atom *atoms)
set atom map for each symmetry operation
Definition symmetry.cpp:11
ModuleBase::Vector3< double > a1
Definition symmetry.h:42
ModuleBase::Matrix3 plat
Definition symmetry.h:88
bool all_mbl
whether all the atoms are movable in all the directions
Definition symmetry.h:90
int ncell
Definition symmetry.h:59
bool is_all_movable(const Atom *atoms, const Statistics &st) const
check if all the atoms are movable delta_pos symmetrization in relax is only meaningful when all the ...
Definition symmetry.cpp:328
int * na
Definition symmetry.h:47
ModuleBase::Vector3< double > s2
Definition symmetry.h:41
double cel_const[6]
Definition symmetry.h:62
std::string spgname
Definition symmetry.h:85
int pgnumber
Definition symmetry.h:82
std::vector< std::vector< int > > isym_rotiat_
atom-map for each symmetry operation: isym_rotiat[isym][iat]=rotiat
Definition symmetry.h:169
ModuleBase::Vector3< double > s3
Definition symmetry.h:41
void get_shortest_latvec(ModuleBase::Vector3< double > &a1, ModuleBase::Vector3< double > &a2, ModuleBase::Vector3< double > &a3) const
Definition symmetry.cpp:199
void lattice_type(ModuleBase::Vector3< double > &v1, ModuleBase::Vector3< double > &v2, ModuleBase::Vector3< double > &v3, ModuleBase::Vector3< double > &v01, ModuleBase::Vector3< double > &v02, ModuleBase::Vector3< double > &v03, double *cel_const, double *pre_const, int &real_brav, std::string &bravname, const Atom *atoms, bool convert_atoms, double *newpos=nullptr) const
Definition symm_lattice.cpp:284
void symmetrize_mat3(ModuleBase::matrix &sigma, const Lattice &lat) const
symmetrize a 3*3 tensor, which can be stress or variation of unitcell in cell-relax
Definition symmetry.cpp:119
int itmin_type
Definition symmetry.h:49
ModuleBase::Matrix3 gmatrix[48]
Definition symmetry.h:73
int standard_lat(ModuleBase::Vector3< double > &a, ModuleBase::Vector3< double > &b, ModuleBase::Vector3< double > &c, double *celconst) const
Definition symm_lattice.cpp:12
double * newpos
Definition symmetry.h:53
void rhog_symmetry(std::complex< double > *rhogtot, int *ixyz2ipw, const int &nx, const int &ny, const int &nz, const int &fftnx, const int &fftny, const int &fftnz)
Definition symm_rho.cpp:66
std::string pgname
Definition symmetry.h:84
double * rotpos
Definition symmetry.h:55
int itmin_start
Definition symmetry.h:50
int max_nrotk
record the maximum number of symmetry operations during cell-relax
Definition symmetry.h:81
int pbrav
Definition symmetry.h:68
void symmetrize_vec3_nat(double *v) const
symmetrize a vector3 with nat elements, which can be forces or variation of atom positions in relax
Definition symmetry.cpp:85
void gmatrix_invmap(const ModuleBase::Matrix3 *s, const int n, int *invmap) const
Definition symmetry.cpp:178
static bool pricell_loop
whether to loop primitive cell in rhog_symmetry, Only for AFM
Definition symmetry.h:31
std::string plattname
Definition symmetry.h:71
int real_brav
Definition symmetry.h:69
~Symmetry()
Definition symmetry.h:23
int sym_test
Definition symmetry.h:67
ModuleBase::Matrix3 optlat
Definition symmetry.h:87
int nat
Definition symmetry.h:46
bool symflag_fft[48]
Definition symmetry.h:66
bool magmom_same_check(const Atom *atoms) const
Definition symm_magnetic.cpp:77
double pre_const[6]
Definition symmetry.h:64
int ntype
Definition symmetry.h:45
ModuleBase::Vector3< double > p3
Definition symmetry.h:43
static int symm_flag
Definition symmetry.h:29
ModuleBase::Vector3< double > p1
Definition symmetry.h:43
std::string ilattname
Definition symmetry.h:70
void gmatrix_convert(const ModuleBase::Matrix3 *sa, ModuleBase::Matrix3 *sb, const int n, const ModuleBase::Matrix3 &a, const ModuleBase::Matrix3 &b) const
Definition symmetry.cpp:157
ModuleBase::Vector3< double > s1
Definition symmetry.h:41
ModuleBase::Matrix3 symop[48]
Definition symmetry.h:77
void pricell(double *pos, const Atom *atoms)
primitive cell analysis
Definition symm_pricell.cpp:4
void get_optlat(ModuleBase::Vector3< double > &v1, ModuleBase::Vector3< double > &v2, ModuleBase::Vector3< double > &v3, ModuleBase::Vector3< double > &w1, ModuleBase::Vector3< double > &w2, ModuleBase::Vector3< double > &w3, int &real_brav, double *cel_const, double *tmp_const) const
Definition symmetry.cpp:248
int * istart
Definition symmetry.h:48
int spgnumber
Definition symmetry.h:83
int nrotk
Definition symmetry.h:80
ModuleBase::Vector3< double > gtrans[48]
Definition symmetry.h:75
void gmatrix_convert_int(const ModuleBase::Matrix3 *sa, ModuleBase::Matrix3 *sb, const int n, const ModuleBase::Matrix3 &a, const ModuleBase::Matrix3 &b) const
Definition symmetry.cpp:135
void analy_sys(const Lattice &lat, const Statistics &st, Atom *atoms, std::ofstream &ofs_running)
analyze the symmetry of the system
Definition symm_analysis.cpp:7
int nop
Definition symmetry.h:78
static bool symm_autoclose
Definition symmetry.h:30
Definition symm_other.cpp:4
info of lattice
Definition unitcell_data.h:8
usefull data and index maps
Definition unitcell_data.h:47