diff --git a/include/ufo/ufo.hpp b/include/ufo/ufo.hpp index 36ca956..ceb16e9 100644 --- a/include/ufo/ufo.hpp +++ b/include/ufo/ufo.hpp @@ -30,8 +30,12 @@ namespace Eigen { constexpr inline auto serialize(auto & archive, Eigen::Matrix3d& matrix) { return archive(std::span(matrix.data(), matrix.size())); } + constexpr inline auto serialize(auto & archive, const Eigen::Matrix3d& matrix) + { return archive(std::span(matrix.data(), matrix.size())); } constexpr inline auto serialize(auto & archive, Eigen::Vector3d& vector) { return archive(std::span(vector.data(), vector.size())); } + constexpr inline auto serialize(auto & archive, const Eigen::Vector3d& vector) + { return archive(std::span(vector.data(), vector.size())); } } // 在相位中, 约定为使用 $\exp (2 \pi i \vec{q} \cdot \vec{r})$ 来表示原子的运动状态 @@ -138,7 +142,7 @@ struct Output }; std::vector QPointData; - void write(std::string filename, std::string format, unsigned percision = 10); + void write(std::string filename, std::string format, unsigned percision = 10) const; Output() = default; Output(std::string filename); diff --git a/include/ufo/ufo.impl.hpp b/include/ufo/ufo.impl.hpp index eb0dbb7..105c4e7 100644 --- a/include/ufo/ufo.impl.hpp +++ b/include/ufo/ufo.impl.hpp @@ -102,7 +102,6 @@ inline Input::Input(std::string filename) QPointData.resize(phonon.size()); for (unsigned i = 0; i < phonon.size(); i++) { - QPointData[i].QPoint.resize(3); for (unsigned j = 0; j < 3; j++) QPointData[i].QPoint(j) = phonon[i]["q-position"][j].as(); auto band = phonon[i]["band"].as>(); @@ -158,7 +157,7 @@ inline Input::Input(std::string filename) } } -inline void Output::write(std::string filename, std::string format, unsigned percision) +inline void Output::write(std::string filename, std::string format, unsigned percision) const { if (format == "yaml") std::ofstream(filename) << [&] @@ -230,7 +229,7 @@ inline void Output::write(std::string filename, std::string format, unsigned per static_assert(sizeof(char) == sizeof(std::byte)); std::ofstream file(filename, std::ios::binary | std::ios::out); file.exceptions(std::ios::badbit | std::ios::failbit); - file.write(reinterpret_cast(data.data()), data.size()); + file.write(reinterpret_cast(data.data()), data.size()); } } diff --git a/test/14.2.2.yaml b/test/14.2.2.yaml index 95b59b6..f1aff17 100644 --- a/test/14.2.2.yaml +++ b/test/14.2.2.yaml @@ -7,6 +7,6 @@ PrimativeCellBasisNumber: [ 8, 8, 8 ] AtomPositionInputFile: { FileName: "/home/chn/Documents/lammps-SiC/14/14.2/14.2.2/14.2.2.4/band.yaml", Format: "yaml" } QPointDataInputFile: { FileName: "/home/chn/Documents/lammps-SiC/14/14.2/14.2.2/14.2.2.4/band.yaml", Format: "yaml" } QPointDataOutputFile: -- { FileName: "test/14.2.2.result.yaml", Format: "yaml-human-readable" } +- { FileName: "test/14.2.2.result.yaml", Format: "yaml" } - { FileName: "test/14.2.2.result.human-readable.yaml", Format: "yaml-human-readable" } - { FileName: "test/14.2.2.result.zpp", Format: "zpp" }