|
1 | 1 | #include "klist.h" |
2 | 2 |
|
| 3 | +#include "k_vector_utils.h" |
3 | 4 | #include "module_base/formatter.h" |
4 | 5 | #include "module_base/memory.h" |
5 | 6 | #include "module_base/parallel_common.h" |
@@ -127,6 +128,12 @@ void K_Vectors::set(const UnitCell& ucell, |
127 | 128 | // Complement the coordinates of k point |
128 | 129 | this->set_both_kvec(reciprocal_vec, latvec, skpt2); |
129 | 130 |
|
| 131 | + std::cout << "after set_both_kvec" << std::endl; |
| 132 | + std::cout << "nks: " << nks << std::endl; |
| 133 | + std::cout << "nkstot: " << nkstot << std::endl; |
| 134 | + std::cout << "size of kvec_d: " << kvec_d.size() << std::endl; |
| 135 | + std::cout << "size of kvec_c: " << kvec_c.size() << std::endl; |
| 136 | + |
130 | 137 | if (GlobalV::MY_RANK == 0) |
131 | 138 | { |
132 | 139 | // output kpoints file |
@@ -163,6 +170,12 @@ void K_Vectors::set(const UnitCell& ucell, |
163 | 170 |
|
164 | 171 | this->print_klists(ofs); |
165 | 172 |
|
| 173 | + std::cout << "after print_klists" << std::endl; |
| 174 | + std::cout << "nks: " << nks << std::endl; |
| 175 | + std::cout << "nkstot: " << nkstot << std::endl; |
| 176 | + std::cout << "size of kvec_d: " << kvec_d.size() << std::endl; |
| 177 | + std::cout << "size of kvec_c: " << kvec_c.size() << std::endl; |
| 178 | + |
166 | 179 | // std::cout << " NUMBER OF K-POINTS : " << nkstot << std::endl; |
167 | 180 |
|
168 | 181 | return; |
@@ -1034,50 +1047,14 @@ void K_Vectors::set_both_kvec(const ModuleBase::Matrix3& G, const ModuleBase::Ma |
1034 | 1047 | // set cartesian k vectors. |
1035 | 1048 | if (!kc_done && kd_done) |
1036 | 1049 | { |
1037 | | - for (int i = 0; i < nkstot; i++) |
1038 | | - { |
1039 | | - // wrong!! kvec_c[i] = G * kvec_d[i]; |
1040 | | - // mohan fixed bug 2010-1-10 |
1041 | | - if (std::abs(kvec_d[i].x) < 1.0e-10) { |
1042 | | - kvec_d[i].x = 0.0; |
1043 | | - } |
1044 | | - if (std::abs(kvec_d[i].y) < 1.0e-10) { |
1045 | | - kvec_d[i].y = 0.0; |
1046 | | - } |
1047 | | - if (std::abs(kvec_d[i].z) < 1.0e-10) { |
1048 | | - kvec_d[i].z = 0.0; |
1049 | | - } |
1050 | | - |
1051 | | - kvec_c[i] = kvec_d[i] * G; |
1052 | | - |
1053 | | - // mohan add2012-06-10 |
1054 | | - if (std::abs(kvec_c[i].x) < 1.0e-10) { |
1055 | | - kvec_c[i].x = 0.0; |
1056 | | - } |
1057 | | - if (std::abs(kvec_c[i].y) < 1.0e-10) { |
1058 | | - kvec_c[i].y = 0.0; |
1059 | | - } |
1060 | | - if (std::abs(kvec_c[i].z) < 1.0e-10) { |
1061 | | - kvec_c[i].z = 0.0; |
1062 | | - } |
1063 | | - } |
| 1050 | + KVectorUtils::k_vec_d2c(*this, G); |
1064 | 1051 | kc_done = true; |
1065 | 1052 | } |
1066 | 1053 |
|
1067 | 1054 | // set direct k vectors |
1068 | 1055 | else if (kc_done && !kd_done) |
1069 | 1056 | { |
1070 | | - ModuleBase::Matrix3 RT = R.Transpose(); |
1071 | | - for (int i = 0; i < nkstot; i++) |
1072 | | - { |
1073 | | - // std::cout << " ik=" << i |
1074 | | - // << " kvec.x=" << kvec_c[i].x |
1075 | | - // << " kvec.y=" << kvec_c[i].y |
1076 | | - // << " kvec.z=" << kvec_c[i].z << std::endl; |
1077 | | - // wrong! kvec_d[i] = RT * kvec_c[i]; |
1078 | | - // mohan fixed bug 2011-03-07 |
1079 | | - kvec_d[i] = kvec_c[i] * RT; |
1080 | | - } |
| 1057 | + KVectorUtils::k_vec_c2d(*this, R); |
1081 | 1058 | kd_done = true; |
1082 | 1059 | } |
1083 | 1060 | std::string table; |
@@ -1360,50 +1337,8 @@ void K_Vectors::set_after_vc(const int& nspin_in, |
1360 | 1337 | ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "nspin", nspin); |
1361 | 1338 |
|
1362 | 1339 | // set cartesian k vectors. |
1363 | | - kd_done = true; |
1364 | | - kc_done = false; |
1365 | | - if (!kc_done && kd_done) |
1366 | | - { |
1367 | | - for (int i = 0; i < nks; i++) |
1368 | | - { |
1369 | | - // wrong!! kvec_c[i] = G * kvec_d[i]; |
1370 | | - // mohan fixed bug 2010-1-10 |
1371 | | - if (std::abs(kvec_d[i].x) < 1.0e-10) { |
1372 | | - kvec_d[i].x = 0.0; |
1373 | | - } |
1374 | | - if (std::abs(kvec_d[i].y) < 1.0e-10) { |
1375 | | - kvec_d[i].y = 0.0; |
1376 | | - } |
1377 | | - if (std::abs(kvec_d[i].z) < 1.0e-10) { |
1378 | | - kvec_d[i].z = 0.0; |
1379 | | - } |
1380 | | - |
1381 | | - kvec_c[i] = kvec_d[i] * reciprocal_vec; |
| 1340 | + KVectorUtils::k_vec_d2c(*this, reciprocal_vec); |
1382 | 1341 |
|
1383 | | - // mohan add2012-06-10 |
1384 | | - if (std::abs(kvec_c[i].x) < 1.0e-10) { |
1385 | | - kvec_c[i].x = 0.0; |
1386 | | - } |
1387 | | - if (std::abs(kvec_c[i].y) < 1.0e-10) { |
1388 | | - kvec_c[i].y = 0.0; |
1389 | | - } |
1390 | | - if (std::abs(kvec_c[i].z) < 1.0e-10) { |
1391 | | - kvec_c[i].z = 0.0; |
1392 | | - } |
1393 | | - } |
1394 | | - kc_done = true; |
1395 | | - } |
1396 | | - |
1397 | | - // set direct k vectors |
1398 | | - else if (kc_done && !kd_done) |
1399 | | - { |
1400 | | - ModuleBase::Matrix3 RT = latvec.Transpose(); |
1401 | | - for (int i = 0; i < nks; i++) |
1402 | | - { |
1403 | | - kvec_d[i] = kvec_c[i] * RT; |
1404 | | - } |
1405 | | - kd_done = true; |
1406 | | - } |
1407 | 1342 | std::string table; |
1408 | 1343 | table += "K-POINTS DIRECT COORDINATES\n"; |
1409 | 1344 | table += FmtCore::format("%8s%12s%12s%12s%8s\n", "KPOINTS", "DIRECT_X", "DIRECT_Y", "DIRECT_Z", "WEIGHT"); |
|
0 commit comments