From 35a176f9b1901c8e59b040116d93a79071e2bd51 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Tue, 20 Jun 2023 14:26:00 +0200
Subject: [PATCH] forbid external, fronting and z-field

---
 Resample/Slice/Slice.cpp      | 4 ++++
 Resample/Slice/SliceStack.cpp | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git a/Resample/Slice/Slice.cpp b/Resample/Slice/Slice.cpp
index 9f08bb049c9..b1dd2f50b3d 100644
--- a/Resample/Slice/Slice.cpp
+++ b/Resample/Slice/Slice.cpp
@@ -82,6 +82,10 @@ SpinMatrix Slice::polarizedReducedPotential(R3 k, double n_ref) const
 
 void Slice::initBField(R3 h_field, double h_z)
 {
+    // Temporary disable setting z-magnetization in all layers (see issue #653)
+    if(m_material.magnetization().z() != 0)
+        throw std::runtime_error("Processing z-magnetization is not implemented yet.");
+
     static constexpr double Magnetic_Permeability = 4e-7 * pi;
     m_B_field = Magnetic_Permeability * (h_field + m_material.magnetization());
     m_B_field.setZ(Magnetic_Permeability * h_z);
diff --git a/Resample/Slice/SliceStack.cpp b/Resample/Slice/SliceStack.cpp
index fab03b77527..612b7621d3f 100644
--- a/Resample/Slice/SliceStack.cpp
+++ b/Resample/Slice/SliceStack.cpp
@@ -50,6 +50,14 @@ void SliceStack::addNSlices(size_t n, double thickness, const Material& material
 
 SliceStack SliceStack::setBField(const R3& externalField)
 {
+    // Temporary disable setting non-zero magnetization in fronting medium (see issue #653)
+    if(this->at(0).material().magnetization() != R3())
+        throw std::runtime_error("Processing fronting magnetization is not implemented yet.");
+
+    // Temporary disable setting non-zero external field (see issue #653)
+    if(externalField != R3())
+        throw std::runtime_error("Processing external field is not implemented yet.");
+
     if (this->empty())
         return *this;
     const double M_z0 = this->at(0).material().magnetization().z();
-- 
GitLab