From 3fdb2e4a73f1c546771bf482cdfd88a00bc2f809 Mon Sep 17 00:00:00 2001
From: abhinavsns <73834077+abhinavsns@users.noreply.github.com>
Date: Mon, 22 Jan 2024 11:43:37 +0100
Subject: [PATCH] Fix for Surface DC-PSE operator

---
 src/DCPSE/Dcpse.hpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/DCPSE/Dcpse.hpp b/src/DCPSE/Dcpse.hpp
index 7a748ae..d35aa26 100644
--- a/src/DCPSE/Dcpse.hpp
+++ b/src/DCPSE/Dcpse.hpp
@@ -131,11 +131,13 @@ public:
             for (int i = 0 ; i < keys.size() ; i++)
             {
                 size_t xqK = keys.get(i);
-                int real_particle=(xqK-initialParticleSize)/(2.*nCount);
-                if(real_particle<0)
-                    {
-                        real_particle=xqK;
-                    }
+		int difference = static_cast<int>(xqK) - static_cast<int>(initialParticleSize);
+		int real_particle;
+		if (std::signbit(difference)) {
+		    real_particle = xqK;
+		} else {
+		    real_particle = difference / (2 * nCount);
+		}
                 auto found=nMap.find(real_particle);
                 if(found!=nMap.end()){
                     accCalcKernels.get(found->second)+=calcKernels.get(kerOff+i);
-- 
GitLab