diff --git a/flake.nix b/flake.nix index b0d00cb..a9bcb00 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,7 @@ devShell.x86_64-linux = pkgs.mkShell.override { stdenv = pkgs.gcc13Stdenv; } { buildInputs = with pkgs; [ yaml-cpp eigen ]; + nativeBuildInputs = with pkgs; [ gdb ]; }; }; } diff --git a/main.cpp b/main.cpp index 3c4877a..e0fbc0c 100644 --- a/main.cpp +++ b/main.cpp @@ -115,8 +115,8 @@ int main(int argc, const char** argv) { // 计算 q 点的坐标, 单位为相对于超胞的倒格矢 auto qpoint_relative_to_super_cell = - Eigen::Vector3i({{i, j, k}}) - + input.SuperCellMultiplier * Eigen::Vector3i({{x, y, z}}); + Eigen::Vector3i({{i}, {j}, {k}}) + + input.SuperCellMultiplier * Eigen::Vector3i({{x}, {y}, {z}}); // 将 q 点坐标转换为埃^-1 auto qpoint = (qpoint_relative_to_super_cell.transpose().cast() * (input.SuperCellMultiplier.cast().inverse().transpose())).transpose(); @@ -173,7 +173,7 @@ int main(int argc, const char** argv) auto& unfolded_qpoint = output.QPointData.emplace_back(); unfolded_qpoint.QPoint = input.SuperCellMultiplier.cast().inverse() * (input.QPointData[i_of_folded_qpoint].QPoint - + Eigen::Vector3i({{x, y, z}}).cast()); + + Eigen::Vector3i({{x}, {y}, {z}}).cast()); for (int i_of_mode = 0; i_of_mode < input.QPointData[i_of_folded_qpoint].ModeData.size(); i_of_mode++) { auto& mode = unfolded_qpoint.ModeData.emplace_back();