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