From 0a5e7e2bd0efd4c8cc6af8c14ec17ad97cf46c3e Mon Sep 17 00:00:00 2001
From: Nicolas Essing <n.essing@fz-juelich.de>
Date: Fri, 5 Nov 2021 19:10:32 +0100
Subject: [PATCH] Corrected sign for negative magnetic moments in output of
 angle changes.

---
 source/KKRnano/source/ProcessKKRresults_mod.F90 | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/source/KKRnano/source/ProcessKKRresults_mod.F90 b/source/KKRnano/source/ProcessKKRresults_mod.F90
index 62c197c39..2c63166ee 100644
--- a/source/KKRnano/source/ProcessKKRresults_mod.F90
+++ b/source/KKRnano/source/ProcessKKRresults_mod.F90
@@ -1814,12 +1814,14 @@ module ProcessKKRresults_mod
             end if
 
             ! Look for largest angle change of constraint atom
-            !  Normalize moment to get direction before fixing
-            newmoment = newmoment / sqrt(dot_product(newmoment, newmoment))
             !  Calculate local frame of reference direction
             dir(1) = sin(theta_noco)*cos(phi_noco)
             dir(2) = sin(theta_noco)*sin(phi_noco)
             dir(3) = cos(theta_noco)
+            !  Normalize moment to get direction before fixing
+            newmoment = newmoment / sqrt(dot_product(newmoment, newmoment))
+            !  For negative moments, correct sign
+            newmoment = newmoment * sign(1., dot_product(newmoment, dir))
             !  Calculate change in angle
             constr_angle_change = acos(dot_product(newmoment, dir))
             if (constr_angle_change > max_constr_angle_change) then
-- 
GitLab