From 2048959bb49fbe7c21902cf5ef360ae06759ba05 Mon Sep 17 00:00:00 2001
From: Vaggelis Papoutsis <vaggelisp@gmail.com>
Date: Thu, 30 Jan 2020 19:22:28 +0200
Subject: [PATCH] ENH: volBSplinesBase: added function returning box ID

given a global control point ID
---
 .../volBSplinesBase/volBSplinesBase.C          | 18 ++++++++++++++++++
 .../volBSplinesBase/volBSplinesBase.H          |  3 +++
 2 files changed, 21 insertions(+)

diff --git a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C
index 32212570127..4f8a5f94259 100644
--- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C
+++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C
@@ -187,6 +187,24 @@ labelList volBSplinesBase::getStartCpID() const
 }
 
 
+label volBSplinesBase::findBoxID(const label cpI) const
+{
+    const labelList startCPID(getStartCpID());
+    for (label iBox = 0; iBox < startCPID.size() - 1 ; ++iBox)
+    {
+        if (cpI >= startCPID[iBox] || cpI < startCPID[iBox + 1])
+        {
+            return iBox;
+        }
+    }
+
+    FatalErrorInFunction
+        << "Invalid control point ID " << cpI << endl
+        << exit(FatalError);
+    return -1;
+}
+
+
 const Foam::labelList& volBSplinesBase::getActiveDesignVariables() const
 {
     return activeDesignVariables_;
diff --git a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H
index b880a932ce2..d6fc19d6169 100644
--- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H
+++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H
@@ -129,6 +129,9 @@ public:
         //- Get start CP ID for each box
         labelList getStartCpID() const;
 
+        //- Find box of certain control point
+        label findBoxID(const label cpI) const;
+
         //- Get active design variables
         const labelList& getActiveDesignVariables() const;
 
-- 
GitLab