From 5968b18f0dbd183ad1aacdfcc57443807f657184 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Mon, 19 Jun 2023 13:31:17 +0200 Subject: [PATCH] explicit SpnMatrix::Null --- Base/Spin/SpinMatrix.cpp | 5 +++++ Base/Spin/SpinMatrix.h | 1 + Resample/Specular/ComputeFluxMagnetic.cpp | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Base/Spin/SpinMatrix.cpp b/Base/Spin/SpinMatrix.cpp index 8553d1045e8..2714fa233f5 100644 --- a/Base/Spin/SpinMatrix.cpp +++ b/Base/Spin/SpinMatrix.cpp @@ -38,6 +38,11 @@ SpinMatrix SpinMatrix::One() return Diag(1, 1); } +SpinMatrix SpinMatrix::Null() +{ + return Diag(0, 0); +} + SpinMatrix SpinMatrix::FromBlochVector(const R3& v) { return {(1.0 + v.z()) / 2.0, complex_t(v.x(), -v.y()) / 2.0, complex_t(v.x(), v.y()) / 2.0, diff --git a/Base/Spin/SpinMatrix.h b/Base/Spin/SpinMatrix.h index caa89b5b849..da1741b07ac 100644 --- a/Base/Spin/SpinMatrix.h +++ b/Base/Spin/SpinMatrix.h @@ -29,6 +29,7 @@ public: static SpinMatrix Diag(complex_t a_, complex_t d_); static SpinMatrix One(); + static SpinMatrix Null(); //! Constructs matrix (I+v*s)/2, where s is the Pauli vector. static SpinMatrix FromBlochVector(const R3& v); diff --git a/Resample/Specular/ComputeFluxMagnetic.cpp b/Resample/Specular/ComputeFluxMagnetic.cpp index e270c781dec..591d764006e 100644 --- a/Resample/Specular/ComputeFluxMagnetic.cpp +++ b/Resample/Specular/ComputeFluxMagnetic.cpp @@ -81,7 +81,7 @@ std::vector<MatrixFlux> computeTR(const SliceStack& slices, const std::vector<co if (N == 1) { TR[0].m_T = SpinMatrix::One(); - TR[0].m_R = SpinMatrix(); + TR[0].m_R = SpinMatrix::Null(); return TR; } @@ -89,8 +89,8 @@ std::vector<MatrixFlux> computeTR(const SliceStack& slices, const std::vector<co TR[0].m_T = SpinMatrix::One(); TR[0].m_R = SpinMatrix::Diag(-1, -1); for (size_t i = 1; i < N; ++i) { - TR[i].m_T = SpinMatrix(); - TR[i].m_R = SpinMatrix(); + TR[i].m_T = SpinMatrix::Null(); + TR[i].m_R = SpinMatrix::Null(); } return TR; } @@ -111,7 +111,7 @@ std::vector<MatrixFlux> computeTR(const SliceStack& slices, const std::vector<co // bottom boundary condition TR.back().m_T = SpinMatrix::One(); - TR.back().m_R = SpinMatrix(); + TR.back().m_R = SpinMatrix::Null(); for (size_t i = N - 1; i > 0; --i) { double sigma = 0.; -- GitLab