|
27 | 27 | * - MD_func::read_vel |
28 | 28 | * - read atomic velocity from STRU |
29 | 29 | * |
30 | | - * - MD_func::init_vel |
31 | | - * - initialize the atomic velocities |
32 | | - * |
33 | 30 | * - MD_func::rescale_vel |
34 | 31 | * - rescale the velocity to the target temperature |
35 | 32 | * |
@@ -60,43 +57,6 @@ TEST_F(MD_func_test, gaussrand) |
60 | 57 | EXPECT_DOUBLE_EQ(MD_func::gaussrand(), 0.60805637857480721); |
61 | 58 | } |
62 | 59 |
|
63 | | -TEST_F(MD_func_test, randomvel) |
64 | | -{ |
65 | | - ucell.init_vel = 0; |
66 | | - temperature = 300 / ModuleBase::Hartree_to_K; |
67 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
68 | | - |
69 | | - EXPECT_NEAR(vel[0].x, 9.9105892783200826e-06, doublethreshold); |
70 | | - EXPECT_NEAR(vel[0].y, -3.343699576563167e-05, doublethreshold); |
71 | | - EXPECT_NEAR(vel[0].z, 9.385130426808701e-05, doublethreshold); |
72 | | - EXPECT_NEAR(vel[1].x, -0.00017919300771203808, doublethreshold); |
73 | | - EXPECT_NEAR(vel[1].y, 5.7074002254799079e-05, doublethreshold); |
74 | | - EXPECT_NEAR(vel[1].z, -3.1088136026582953e-05, doublethreshold); |
75 | | - EXPECT_NEAR(vel[2].x, 0.000141316492668737, doublethreshold); |
76 | | - EXPECT_NEAR(vel[2].y, -0.00015841124290501442, doublethreshold); |
77 | | - EXPECT_NEAR(vel[2].z, 1.900921882689748e-05, doublethreshold); |
78 | | - EXPECT_NEAR(vel[3].x, 2.7965925764981002e-05, doublethreshold); |
79 | | - EXPECT_NEAR(vel[3].y, 0.00013477423641584702, doublethreshold); |
80 | | - EXPECT_NEAR(vel[3].z, -8.177238706840153e-05, doublethreshold); |
81 | | -} |
82 | | - |
83 | | -TEST_F(MD_func_test, getmassmbl) |
84 | | -{ |
85 | | - ucell.init_vel = 0; |
86 | | - temperature = 300 / ModuleBase::Hartree_to_K; |
87 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
88 | | - |
89 | | - for (int i = 0; i < natom; ++i) |
90 | | - { |
91 | | - EXPECT_DOUBLE_EQ(allmass[i], 39.948 / ModuleBase::AU_to_MASS); |
92 | | - EXPECT_TRUE(ionmbl[i].x == 1); |
93 | | - EXPECT_TRUE(ionmbl[i].y == 1); |
94 | | - EXPECT_TRUE(ionmbl[i].z == 1); |
95 | | - } |
96 | | - |
97 | | - EXPECT_TRUE(frozen_freedom == 3); |
98 | | -} |
99 | | - |
100 | 60 | TEST_F(MD_func_test, readvel) |
101 | 61 | { |
102 | 62 | MD_func::read_vel(ucell, vel); |
@@ -142,64 +102,24 @@ TEST_F(MD_func_test, RescaleVel) |
142 | 102 | EXPECT_DOUBLE_EQ(vel[3].z, 0.00013737032325207373); |
143 | 103 | } |
144 | 104 |
|
145 | | -TEST_F(MD_func_test, InitVelCase1) |
146 | | -{ |
147 | | - ucell.init_vel = 1; |
148 | | - temperature = -1.0; |
149 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
150 | | - |
151 | | - EXPECT_NEAR(temperature, 300.0 / ModuleBase::Hartree_to_K, doublethreshold); |
152 | | -} |
153 | | - |
154 | | -TEST_F(MD_func_test, InitVelCase2) |
155 | | -{ |
156 | | - ucell.init_vel = 1; |
157 | | - temperature = 300.0 / ModuleBase::Hartree_to_K; |
158 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
159 | | - |
160 | | - EXPECT_DOUBLE_EQ(temperature, 300.0 / ModuleBase::Hartree_to_K); |
161 | | -} |
162 | | - |
163 | | -TEST_F(MD_func_test, InitVelCase3) |
164 | | -{ |
165 | | - ucell.init_vel = 1; |
166 | | - temperature = 310.0 / ModuleBase::Hartree_to_K; |
167 | | - |
168 | | - EXPECT_DOUBLE_EQ(temperature, 310.0 / ModuleBase::Hartree_to_K); |
169 | | -} |
170 | | - |
171 | | -TEST_F(MD_func_test, InitVelCase4) |
172 | | -{ |
173 | | - ucell.init_vel = 0; |
174 | | - temperature = 300.0 / ModuleBase::Hartree_to_K; |
175 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
176 | | - |
177 | | - EXPECT_DOUBLE_EQ(temperature, 300.0 / ModuleBase::Hartree_to_K); |
178 | | -} |
179 | | - |
180 | | -TEST_F(MD_func_test, InitVelCase5) |
181 | | -{ |
182 | | - ucell.init_vel = 1; |
183 | | - temperature = 330.0 / ModuleBase::Hartree_to_K; |
184 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, true, temperature, allmass, frozen_freedom, ionmbl, vel); |
185 | | - |
186 | | - EXPECT_DOUBLE_EQ(temperature, 330.0 / ModuleBase::Hartree_to_K); |
187 | | -} |
188 | | - |
189 | 105 | TEST_F(MD_func_test, compute_stress) |
190 | 106 | { |
191 | | - temperature = 300.0 / ModuleBase::Hartree_to_K; |
192 | | - MD_func::init_vel(ucell, GlobalV::MY_RANK, false, temperature, allmass, frozen_freedom, ionmbl, vel); |
| 107 | + const ModuleBase::Vector3<double> test_velocity(0.1, 0.2, 0.3); |
| 108 | + for (int i = 0; i < natom; ++i) |
| 109 | + { |
| 110 | + allmass[i] = 39.948 / ModuleBase::AU_to_MASS; |
| 111 | + vel[i] = test_velocity; |
| 112 | + } |
193 | 113 | MD_func::compute_stress(ucell, vel, allmass, true, virial, stress); |
194 | | - EXPECT_DOUBLE_EQ(stress(0, 0), 5.2064533063674207e-06); |
195 | | - EXPECT_DOUBLE_EQ(stress(0, 1), -1.6467487572445666e-06); |
196 | | - EXPECT_DOUBLE_EQ(stress(0, 2), 1.5039983732220917e-06); |
197 | | - EXPECT_DOUBLE_EQ(stress(1, 0), -1.6467487572445661e-06); |
198 | | - EXPECT_DOUBLE_EQ(stress(1, 1), 2.380646437613151e-06); |
199 | | - EXPECT_DOUBLE_EQ(stress(1, 2), -1.2514149065904968e-06); |
200 | | - EXPECT_DOUBLE_EQ(stress(2, 0), 1.5039983732220917e-06); |
201 | | - EXPECT_DOUBLE_EQ(stress(2, 1), -1.2514149065904968e-06); |
202 | | - EXPECT_DOUBLE_EQ(stress(2, 2), 9.6330189688583664e-07); |
| 114 | + EXPECT_DOUBLE_EQ(stress(0, 0), 2.9128300667662788); |
| 115 | + EXPECT_DOUBLE_EQ(stress(0, 1), 5.8256601335325575); |
| 116 | + EXPECT_DOUBLE_EQ(stress(0, 2), 8.7384902002988341); |
| 117 | + EXPECT_DOUBLE_EQ(stress(1, 0), 5.8256601335325575); |
| 118 | + EXPECT_DOUBLE_EQ(stress(1, 1), 11.651320267065115); |
| 119 | + EXPECT_DOUBLE_EQ(stress(1, 2), 17.476980400597668); |
| 120 | + EXPECT_DOUBLE_EQ(stress(2, 0), 8.7384902002988358); |
| 121 | + EXPECT_DOUBLE_EQ(stress(2, 1), 17.476980400597672); |
| 122 | + EXPECT_DOUBLE_EQ(stress(2, 2), 26.215470600896506); |
203 | 123 | } |
204 | 124 |
|
205 | 125 | TEST_F(MD_func_test, dump_info) |
|
0 commit comments