59 std::vector<ModuleBase::Vector3<double>>
ptrans;
96 double* celconst)
const;
107 std::string& bravname,
110 double*
newpos =
nullptr)
const;
114 std::ofstream& ofs_running,
135 void rho_symmetry(
double *rho,
const int &nr1,
const int &nr2,
const int &nr3);
137 void rhog_symmetry(std::complex<double> *rhogtot,
int* ixyz2ipw,
const int &nx,
138 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:22
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:80
double pcel_const[6]
Definition symmetry.h:64
ModuleBase::Vector3< double > p2
Definition symmetry.h:44
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:75
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:43
int * index
Definition symmetry.h:61
std::vector< ModuleBase::Vector3< double > > ptrans
Definition symmetry.h:59
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:161
ModuleBase::Vector3< double > a2
Definition symmetry.h:43
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:20
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:43
ModuleBase::Matrix3 plat
Definition symmetry.h:89
bool all_mbl
whether all the atoms are movable in all the directions
Definition symmetry.h:91
int ncell
Definition symmetry.h:60
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:48
ModuleBase::Vector3< double > s2
Definition symmetry.h:42
double cel_const[6]
Definition symmetry.h:63
std::string spgname
Definition symmetry.h:86
int pgnumber
Definition symmetry.h:83
std::vector< std::vector< int > > isym_rotiat_
atom-map for each symmetry operation: isym_rotiat[isym][iat]=rotiat
Definition symmetry.h:170
ModuleBase::Vector3< double > s3
Definition symmetry.h:42
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:50
ModuleBase::Matrix3 gmatrix[48]
Definition symmetry.h:74
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:54
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:62
std::string pgname
Definition symmetry.h:85
double * rotpos
Definition symmetry.h:56
int itmin_start
Definition symmetry.h:51
int max_nrotk
record the maximum number of symmetry operations during cell-relax
Definition symmetry.h:82
int pbrav
Definition symmetry.h:69
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:32
std::string plattname
Definition symmetry.h:72
int real_brav
Definition symmetry.h:70
~Symmetry()
Definition symmetry.h:24
int sym_test
Definition symmetry.h:68
ModuleBase::Matrix3 optlat
Definition symmetry.h:88
int nat
Definition symmetry.h:47
bool symflag_fft[48]
Definition symmetry.h:67
bool magmom_same_check(const Atom *atoms) const
Definition symm_magnetic.cpp:77
double pre_const[6]
Definition symmetry.h:65
int ntype
Definition symmetry.h:46
ModuleBase::Vector3< double > p3
Definition symmetry.h:44
static int symm_flag
Definition symmetry.h:30
ModuleBase::Vector3< double > p1
Definition symmetry.h:44
std::string ilattname
Definition symmetry.h:71
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:42
ModuleBase::Matrix3 symop[48]
Definition symmetry.h:78
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:49
int spgnumber
Definition symmetry.h:84
int nrotk
Definition symmetry.h:81
ModuleBase::Vector3< double > gtrans[48]
Definition symmetry.h:76
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:6
int nop
Definition symmetry.h:79
static bool symm_autoclose
Definition symmetry.h:31
Definition symm_other.cpp:4
info of lattice
Definition unitcell_data.h:8
usefull data and index maps
Definition unitcell_data.h:47