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 3221257012726cac119b2e61c00ecb7ce6172566..4f8a5f94259e5013dcf1af1220102bfb8e429377 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 b880a932ce2051bc474cca220800adfeaae9bd94..d6fc19d6169a0a73cb4fb00238136d03818fb390 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;