ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
symmetry_basic.h
Go to the documentation of this file.
1//==========================================================
2// AUTHOR : Zhengpan , mohan , spshu
3// DATE : 2007-9
4//==========================================================
5#ifndef SYMMETRY_BASIC_H
6#define SYMMETRY_BASIC_H
7#include "symm_other.h"
9#include "source_base/ylm.h"
10#include "source_base/matrix3.h"
11namespace ModuleSymmetry
12{
14{
15 public:
16
19
20 double epsilon;
22
23 // control accuray
24 bool equal(const double &m, const double &n)const;
25 void check_boundary(double &x)const;
26 double get_translation_vector(const double& x1, const double& x2)const;
27 void check_translation(double &x, const double &t) const;
28 double check_diff(const double& x1, const double& x2) const;
29
30 void veccon(
31 double *va,
32 double *vb,
33 const int num,
40 );
41 void matrigen(ModuleBase::Matrix3 *symgen, const int ngen, ModuleBase::Matrix3* symop, int &nop) const;
42 void setgroup(ModuleBase::Matrix3 *symop, int &nop, const int &ibrav) const;
43 void rotate(
45 int i, int j, int k, const int, const int, const int, int&, int&, int&);
46 void test_atom_ordering(double *posi, const int natom, int *subindex) const;
47
50 int subgroup(const int& nrot, const int& ninv, const int& nc2, const int& nc3, const int& nc4, const int& nc6,
51 const int& ns1, const int& ns3, const int& ns4, const int& ns6)const;
52 bool pointgroup(const int& nrot, int& pgnumber, std::string& pgname, const ModuleBase::Matrix3* gmatrix, std::ofstream& ofs_running)const;
53
54protected:
55 std::string get_brav_name(const int ibrav) const;
56 void atom_ordering(double *posi, const int natom, int *subindex);
57 void atom_ordering_new(double *posi, const int natom, int *subindex) const;
58
59 private:
60
61 void order_atoms(double* pos, const int &nat, const int *index) const;
62 void order_y(double *pos, const int &oldpos, const int &newpos);
63 void order_z(double *pos, const int &oldpos, const int &newpos);
64};
65
66//for test only
67extern bool test_brav;
68
69}//end of define namespace
70
71#endif
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
3 elements vector
Definition vector3.h:22
Definition symmetry_basic.h:14
void rotate(ModuleBase::Matrix3 &gmatrix, ModuleBase::Vector3< double > &gtrans, int i, int j, int k, const int, const int, const int, int &, int &, int &)
Definition symmetry_basic.cpp:861
bool pointgroup(const int &nrot, int &pgnumber, std::string &pgname, const ModuleBase::Matrix3 *gmatrix, std::ofstream &ofs_running) const
Definition symmetry_basic.cpp:549
void order_atoms(double *pos, const int &nat, const int *index) const
Definition symmetry_basic.cpp:82
double get_translation_vector(const double &x1, const double &x2) const
Definition symmetry_basic.cpp:52
~Symmetry_Basic()
Definition symmetry_basic.h:18
double epsilon
the precision of symmetry operation
Definition symmetry_basic.h:20
double epsilon_input
the input value of symmetry_prec, should not be changed
Definition symmetry_basic.h:21
void check_boundary(double &x) const
Definition symmetry_basic.cpp:47
void order_z(double *pos, const int &oldpos, const int &newpos)
void matrigen(ModuleBase::Matrix3 *symgen, const int ngen, ModuleBase::Matrix3 *symop, int &nop) const
Definition symmetry_basic.cpp:185
void test_atom_ordering(double *posi, const int natom, int *subindex) const
Definition symmetry_basic.cpp:971
bool equal(const double &m, const double &n) const
Definition symmetry_basic.cpp:36
int subgroup(const int &nrot, const int &ninv, const int &nc2, const int &nc3, const int &nc4, const int &nc6, const int &ns1, const int &ns3, const int &ns4, const int &ns6) const
Definition symmetry_basic.cpp:469
void check_translation(double &x, const double &t) const
Definition symmetry_basic.cpp:61
std::string get_brav_name(const int ibrav) const
Definition symmetry_basic.cpp:11
Symmetry_Basic()
Definition symmetry_basic.h:17
void veccon(double *va, double *vb, const int num, const ModuleBase::Vector3< double > &aa1, const ModuleBase::Vector3< double > &aa2, const ModuleBase::Vector3< double > &aa3, const ModuleBase::Vector3< double > &bb1, const ModuleBase::Vector3< double > &bb2, const ModuleBase::Vector3< double > &bb3)
Definition symmetry_basic.cpp:115
void setgroup(ModuleBase::Matrix3 *symop, int &nop, const int &ibrav) const
Definition symmetry_basic.cpp:328
void atom_ordering_new(double *posi, const int natom, int *subindex) const
Definition symmetry_basic.cpp:901
void order_y(double *pos, const int &oldpos, const int &newpos)
double check_diff(const double &x1, const double &x2) const
Definition symmetry_basic.cpp:69
void atom_ordering(double *posi, const int natom, int *subindex)
Definition symm_other.cpp:4
bool test_brav
Definition symmetry_basic.cpp:6