ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
setcell.h
Go to the documentation of this file.
1//==========================================================
2// Used to genarate ucell
3//==========================================================
4#ifndef SETCELL_H
5#define SETCELL_H
6
11
13{
14 this->tot_mag = 0.0;
15 this->abs_mag = 0.0;
16 this->start_mag = nullptr;
17}
19{
20 delete[] this->start_mag;
21}
22
23class Setcell
24{
25 public:
26 static void setupcell(UnitCell& ucell)
27 {
28 ucell.ntype = 1;
29
30 ucell.atoms = new Atom[ucell.ntype];
31 ucell.set_atom_flag = true;
32
33 ucell.atom_mass.resize(ucell.ntype);
34 ucell.atom_label.resize(ucell.ntype);
35 ucell.atom_mass[0] = 39.948;
36 ucell.atom_label[0] = "Ar";
37
38 ucell.lat0 = 1;
39 ucell.lat0_angstrom = ucell.lat0 * 0.529177;
40 ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0;
41 ucell.tpiba2 = ucell.tpiba * ucell.tpiba;
42
43 ucell.latvec.e11 = ucell.latvec.e22 = ucell.latvec.e33 = 10;
44 ucell.latvec.e12 = ucell.latvec.e13 = ucell.latvec.e23 = 0;
45 ucell.latvec.e21 = ucell.latvec.e31 = ucell.latvec.e32 = 0;
46
47 ucell.a1.x = ucell.latvec.e11;
48 ucell.a1.y = ucell.latvec.e12;
49 ucell.a1.z = ucell.latvec.e13;
50
51 ucell.a2.x = ucell.latvec.e21;
52 ucell.a2.y = ucell.latvec.e22;
53 ucell.a2.z = ucell.latvec.e23;
54
55 ucell.a3.x = ucell.latvec.e31;
56 ucell.a3.y = ucell.latvec.e32;
57 ucell.a3.z = ucell.latvec.e33;
58
59 ucell.nat = 4;
60 ucell.atoms[0].na = 4;
61 ucell.init_vel = true;
62
63 ucell.atoms[0].tau.resize(4);
64 ucell.atoms[0].dis.resize(4);
65 ucell.atoms[0].taud.resize(4);
66 ucell.atoms[0].vel.resize(4);
67 ucell.atoms[0].mbl.resize(4);
68 ucell.atoms[0].mass = ucell.atom_mass[0];
69
70 ucell.atoms[0].angle1.resize(4);
71 ucell.atoms[0].angle2.resize(4);
72 ucell.atoms[0].m_loc_.resize(4);
73
74 ucell.atoms[0].taud[0].set(0.0, 0.0, 0.0);
75 ucell.atoms[0].taud[1].set(0.52, 0.52, 0.0);
76 ucell.atoms[0].taud[2].set(0.51, 0.0, 0.5);
77 ucell.atoms[0].taud[3].set(0.0, 0.53, 0.5);
78 ucell.atoms[0].vel[0].set(-0.000132080736364, 7.13429429835e-05, -1.40179977966e-05);
79 ucell.atoms[0].vel[1].set(0.000153039878532, -0.000146533266608, 9.64491480698e-05);
80 ucell.atoms[0].vel[2].set(-0.000133789480226, -3.0451038112e-06, -5.40998380137e-05);
81 ucell.atoms[0].vel[3].set(0.000112830338059, 7.82354274358e-05, -2.83313122596e-05);
82 for (int ia = 0; ia < 4; ++ia)
83 {
84 ucell.atoms[0].tau[ia] = ucell.atoms[0].taud[ia] * ucell.latvec;
85 ucell.atoms[0].mbl[ia].set(1, 1, 1);
86 }
87
88 ucell.omega = std::abs(ucell.latvec.Det()) * ucell.lat0 * ucell.lat0 * ucell.lat0;
89
90 ucell.GT = ucell.latvec.Inverse();
91 ucell.G = ucell.GT.Transpose();
92 ucell.GGT = ucell.G * ucell.GT;
93 ucell.invGGT = ucell.GGT.Inverse();
94
95 ucell.GT0 = ucell.latvec.Inverse();
96 ucell.G0 = ucell.GT.Transpose();
97 ucell.GGT0 = ucell.G * ucell.GT;
98 ucell.invGGT0 = ucell.GGT.Inverse();
99
100 ucell.set_iat2itia();
101 };
102
103 static void parameters(Input_para& input)
104 {
105 PARAM.sys.global_out_dir = "./";
108 PARAM.input.cal_stress = true;
109
110
111 input.mdp.dump_virial = true;
112 input.mdp.dump_force = true;
113 input.mdp.dump_vel = true;
114 input.cal_stress = true;
115
116 input.mdp.md_restart = false;
117 input.mdp.md_dt = 1;
118 input.mdp.md_tfirst = input.mdp.md_tlast = 300;
119
120 PARAM.input.esolver_type = "lj";
121 input.mdp.lj_rcut = {8.5};
122 input.mdp.lj_epsilon = {0.01032};
123 input.mdp.lj_sigma = {3.405};
124
125 input.mdp.msst_direction = 2;
126 input.mdp.msst_qmass = 1;
127 input.mdp.msst_vel = 0;
128 input.mdp.msst_vis = 0;
129 input.mdp.msst_tscale = 0.01;
130
131 input.mdp.md_tfreq = 1;
132 input.mdp.md_tchain = 4;
133 input.mdp.md_pfreq = 1;
134 input.mdp.md_pchain = 4;
135
136 input.mdp.md_damp = 1;
137
138 input.mdp.md_nraise = 2;
139 input.mdp.md_tolerance = 0;
140 };
141};
142
143#endif
Definition atom_spec.h:7
std::vector< ModuleBase::Vector3< double > > m_loc_
Definition atom_spec.h:48
int na
Definition atom_spec.h:28
std::vector< double > angle2
Definition atom_spec.h:47
std::vector< ModuleBase::Vector3< double > > vel
Definition atom_spec.h:39
double mass
Definition atom_spec.h:14
std::vector< ModuleBase::Vector3< double > > dis
Definition atom_spec.h:37
std::vector< ModuleBase::Vector3< double > > taud
Definition atom_spec.h:38
std::vector< ModuleBase::Vector3< double > > tau
Definition atom_spec.h:36
std::vector< ModuleBase::Vector3< int > > mbl
Definition atom_spec.h:15
std::vector< double > angle1
Definition atom_spec.h:46
double tot_mag
Definition magnetism.h:19
double * start_mag
Definition magnetism.h:16
Magnetism()
Definition sltk_atom_arrange_test.cpp:27
double abs_mag
Definition magnetism.h:23
~Magnetism()
Definition sltk_atom_arrange_test.cpp:33
double e13
Definition matrix3.h:26
Matrix3 Inverse(void) const
Inverse a 3x3 matrix.
Definition matrix3.cpp:44
double e31
Definition matrix3.h:26
double e11
element e_ij: i_row, j_column
Definition matrix3.h:26
double e33
Definition matrix3.h:26
double e32
Definition matrix3.h:26
double e21
Definition matrix3.h:26
double e12
Definition matrix3.h:26
double Det(void) const
Calculate the determinant of a 3x3 matrix.
Definition matrix3.cpp:29
double e23
Definition matrix3.h:26
double e22
Definition matrix3.h:26
Matrix3 Transpose(void) const
Transpose a 3x3 matrix.
Definition matrix3.cpp:39
T x
Definition vector3.h:24
T y
Definition vector3.h:25
T z
Definition vector3.h:26
Input_para input
Definition parameter.h:45
System_para sys
Definition parameter.h:47
Definition setcell.h:36
static void parameters(Input_para &input)
Definition setcell.h:103
static void setupcell(UnitCell &ucell)
Definition setcell.h:26
Definition unitcell.h:16
Atom * atoms
Definition unitcell.h:18
ModuleBase::Matrix3 & GT
Definition unitcell.h:40
double & lat0
Definition unitcell.h:28
ModuleBase::Matrix3 invGGT0
Definition unitcell.h:166
ModuleBase::Matrix3 GT0
Definition unitcell.h:164
ModuleBase::Matrix3 & latvec
Definition unitcell.h:35
bool init_vel
Definition unitcell.h:190
int & ntype
Definition unitcell.h:45
double & tpiba
Definition unitcell.h:30
double & tpiba2
Definition unitcell.h:31
int & nat
Definition unitcell.h:46
double & omega
Definition unitcell.h:32
ModuleBase::Matrix3 & GGT
Definition unitcell.h:41
ModuleBase::Vector3< double > & a2
Definition unitcell.h:36
ModuleBase::Vector3< double > & a3
Definition unitcell.h:36
bool set_atom_flag
Definition unitcell.h:20
std::vector< std::string > atom_label
Definition unitcell.h:202
void set_iat2itia()
Definition mock_unitcell.cpp:23
ModuleBase::Matrix3 & invGGT
Definition unitcell.h:42
ModuleBase::Vector3< double > & a1
Definition unitcell.h:36
ModuleBase::Matrix3 G0
Definition unitcell.h:163
ModuleBase::Matrix3 & G
Definition unitcell.h:39
ModuleBase::Matrix3 GGT0
Definition unitcell.h:165
double & lat0_angstrom
Definition unitcell.h:29
std::vector< double > atom_mass
Definition unitcell.h:201
const double TWO_PI
Definition constants.h:21
const double ANGSTROM_AU
Definition constants.h:64
Parameter PARAM
Definition parameter.cpp:3
Definition input_parameter.h:12
MD_para mdp
Definition input_parameter.h:175
double search_radius
11.1
Definition input_parameter.h:135
bool cal_stress
calculate the stress
Definition input_parameter.h:32
std::string esolver_type
the energy solver: ksdft, sdft, ofdft, tddft, lj, dp
Definition input_parameter.h:22
double md_tolerance
tolerance for velocity rescaling (K)
Definition md_parameter.h:61
double md_damp
Langevin damping parameter (time units)
Definition md_parameter.h:59
double msst_vis
artificial msst_vis (mass/length/time)
Definition md_parameter.h:44
bool md_restart
1: restart MD, 0: no restart MD
Definition md_parameter.h:14
double msst_qmass
cell mass-like parameter (mass^2/length^4)
Definition md_parameter.h:43
double md_tfreq
Definition md_parameter.h:50
bool dump_force
Definition md_parameter.h:64
int md_nraise
parameters used when md_type=nvt
Definition md_parameter.h:62
double md_tfirst
Temperature (in Hartree, 1 Hartree ~ 3E5 K)
Definition md_parameter.h:19
std::vector< double > lj_epsilon
the value of epsilon for LJ potential (eV)
Definition md_parameter.h:29
double md_dt
Time increment (hbar/E_hartree)
Definition md_parameter.h:18
std::vector< double > lj_rcut
cutoff radius of LJ potential (\AA)
Definition md_parameter.h:28
bool dump_virial
Definition md_parameter.h:68
bool dump_vel
Definition md_parameter.h:66
double msst_tscale
reduction in initial temperature (0~1)
Definition md_parameter.h:45
int msst_direction
shock direction: 0, 1, 2
Definition md_parameter.h:41
int md_pchain
num of thermostats coupled with barostat
Definition md_parameter.h:57
double md_tlast
Target temperature.
Definition md_parameter.h:20
std::vector< double > lj_sigma
the value of sigma for LJ potential (\AA)
Definition md_parameter.h:30
double md_pfreq
Definition md_parameter.h:54
int md_tchain
num of thermostats coupled with particles
Definition md_parameter.h:56
double msst_vel
shock msst_vel (\AA/fs)
Definition md_parameter.h:42
std::string global_readin_dir
global readin directory
Definition system_parameter.h:43
std::string global_out_dir
global output directory
Definition system_parameter.h:42