diff --git a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.C b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.C index 7b7b0b45dc56bba853a073dbfde4110dfa8a02ec..149a05059435b9c656a9ac86dd3538b55b1ac2cd 100644 --- a/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.C +++ b/src/optimisation/adjointOptimisation/adjoint/displacementMethod/displacementMethodvolumetricBSplinesMotionSolver/displacementMethodvolumetricBSplinesMotionSolver.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -108,7 +108,7 @@ void displacementMethodvolumetricBSplinesMotionSolver::boundControlField // control points movement. Safe since the motionSolver can only be an // volumetricBSplinesMotionSolver refCast<volumetricBSplinesMotionSolver> - (motionPtr_()).boundControlPointsMovement(controlField); + (motionPtr_()).boundControlPointMovement(controlField); } diff --git a/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.C b/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.C index 989e00bbd95689a3e70f56c39aed91e838b17b2b..89fa4dd4a417b1dfb31a05963cdbedcab65279c3 100644 --- a/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.C +++ b/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -142,12 +142,12 @@ void Foam::volumetricBSplinesMotionSolver::setControlPointsMovement } -void Foam::volumetricBSplinesMotionSolver::boundControlPointsMovement +void Foam::volumetricBSplinesMotionSolver::boundControlPointMovement ( vectorField& controlPointsMovement ) { - volBSplinesBase_.boundControlPointsMovement(controlPointsMovement); + volBSplinesBase_.boundControlPointMovement(controlPointsMovement); } diff --git a/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.H b/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.H index 32ed7f2f3e693544b43dd34db27ee7201cd214b5..0a90e27c8538a38fe9eb5b173cc485442aa551ed 100644 --- a/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.H +++ b/src/optimisation/adjointOptimisation/adjoint/dynamicMesh/motionSolver/volumetricBSplinesMotionSolver/volumetricBSplinesMotionSolver.H @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -130,7 +130,7 @@ public: void setControlPointsMovement(const vectorField& controlPointsMovement); //- Bound control points movement - void boundControlPointsMovement(vectorField& controlPointsMovement); + void boundControlPointMovement(vectorField& controlPointsMovement); }; diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C index 13cd21c68588d2ebdde8138ef3e5022b950c8d74..7e9e54a6352edccffad789022fe886a431fbed2f 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -86,10 +86,10 @@ void sensitivityVolBSplines::computeObjectiveContributions() dSdbSens_[passedCPs + cpI] = dSdbSensCP; dndbSens_[passedCPs + cpI] = dndbSensCP; } - boxes[iNURB].boundControlPointMovement(dSdbSens_); - boxes[iNURB].boundControlPointMovement(dndbSens_); passedCPs += nb; } + volBSplinesBase_.boundControlPointMovement(dSdbSens_); + volBSplinesBase_.boundControlPointMovement(dndbSens_); passedCPs = 0; forAll(boxes, iNURB) @@ -106,9 +106,9 @@ void sensitivityVolBSplines::computeObjectiveContributions() { dxdbDirectSens_[passedCPs + cpI] = sensDxDbDirect[cpI]; } - boxes[iNURB].boundControlPointMovement(dxdbDirectSens_); passedCPs += sensDxDbDirect.size(); } + volBSplinesBase_.boundControlPointMovement(dxdbDirectSens_); } } @@ -188,9 +188,8 @@ void sensitivityVolBSplines::assembleSensitivities() flowSens_[passedCPs + cpI] = sens[cpI]; } passedCPs += sens.size(); - - boxes[iNURB].boundControlPointMovement(flowSens_); } + volBSplinesBase_.boundControlPointMovement(flowSens_); // Contribution from objective function // Note: diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C index aba56274ec3877c79a7e47164b6476d1c8ff1bb5..7191f5a90cfd571d48feefc39b01d3168a5ba5f6 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplinesFI/sensitivityVolBSplinesFIIncompressible.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -137,7 +137,7 @@ void sensitivityVolBSplinesFI::assembleSensitivities() PtrList<NURBS3DVolume>& boxes = volBSplinesBase_.boxesRef(); forAll(boxes, iNURB) { - label nb = boxes[iNURB].getControlPoints().size(); + const label nb(boxes[iNURB].getControlPoints().size()); vectorField boxSensitivities(nb, Zero); vectorField dxdbSens = boxes[iNURB].computeControlPointSensitivities @@ -278,13 +278,6 @@ void sensitivityVolBSplinesFI::assembleSensitivities() } // Zero sensitivities in non-active design variables - boxes[iNURB].boundControlPointMovement(flowSens_); - boxes[iNURB].boundControlPointMovement(dSdbSens_); - boxes[iNURB].boundControlPointMovement(dndbSens_); - boxes[iNURB].boundControlPointMovement(dVdbSens_); - boxes[iNURB].boundControlPointMovement(distanceSens_); - boxes[iNURB].boundControlPointMovement(dxdbDirectSens_); - boxes[iNURB].boundControlPointMovement(optionsSens_); boxes[iNURB].boundControlPointMovement(boxSensitivities); // Transfer sensitivities to global list @@ -299,6 +292,16 @@ void sensitivityVolBSplinesFI::assembleSensitivities() // Increment number of passed sensitivities passedCPs += nb; } + + // Zero non-active sensitivity components. + // For consistent output only, does not affect optimisation + volBSplinesBase_.boundControlPointMovement(flowSens_); + volBSplinesBase_.boundControlPointMovement(dSdbSens_); + volBSplinesBase_.boundControlPointMovement(dndbSens_); + volBSplinesBase_.boundControlPointMovement(dVdbSens_); + volBSplinesBase_.boundControlPointMovement(distanceSens_); + volBSplinesBase_.boundControlPointMovement(dxdbDirectSens_); + volBSplinesBase_.boundControlPointMovement(optionsSens_); } diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovementVolumetricBSplinesExternalMotionSolver/optMeshMovementVolumetricBSplinesExternalMotionSolver.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovementVolumetricBSplinesExternalMotionSolver/optMeshMovementVolumetricBSplinesExternalMotionSolver.C index b53cc7669ff7592872a8f6b41499c0bcbd9fbfe1..46eeadedeab1fd7ff8ab9854711d9e5a1fe01067 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovementVolumetricBSplinesExternalMotionSolver/optMeshMovementVolumetricBSplinesExternalMotionSolver.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/optMeshMovement/optMeshMovementVolumetricBSplinesExternalMotionSolver/optMeshMovementVolumetricBSplinesExternalMotionSolver.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -69,7 +69,7 @@ computeBoundaryMovement } // Bound control point movement for non-active CPs - volBSplinesBase_.boundControlPointsMovement(cpMovement_); + volBSplinesBase_.boundControlPointMovement(cpMovement_); // Compute boundary movement label passedCPs(0); 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 ca4d51eb3081693a6dad39dec758d784c257aea0..3221257012726cac119b2e61c00ecb7ce6172566 100644 --- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C +++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -203,7 +203,7 @@ Foam::scalar Foam::volBSplinesBase::computeMaxBoundaryDisplacement label pastControlPoints(0); forAll(volume_, iNURB) { - const label nb = volume_[iNURB].getControlPoints().size(); + const label nb(volume_[iNURB].getControlPoints().size()); vectorField localControlPointsMovement(nb, Zero); // Set localControlPointsMovement @@ -230,7 +230,7 @@ Foam::scalar Foam::volBSplinesBase::computeMaxBoundaryDisplacement } -void Foam::volBSplinesBase::boundControlPointsMovement +void Foam::volBSplinesBase::boundControlPointMovement ( vectorField& controlPointsMovement ) @@ -238,10 +238,10 @@ void Foam::volBSplinesBase::boundControlPointsMovement label pastControlPoints(0); forAll(volume_, iNURB) { - label nb = volume_[iNURB].getControlPoints().size(); + const label nb(volume_[iNURB].getControlPoints().size()); vectorField localControlPointsMovement(nb, Zero); - // set localControlPointsMovement + // Set localControlPointsMovement forAll (localControlPointsMovement, iCPM) { localControlPointsMovement[iCPM] = @@ -250,7 +250,7 @@ void Foam::volBSplinesBase::boundControlPointsMovement volume_[iNURB].boundControlPointMovement(localControlPointsMovement); - // transfer bounding back to controlPointMovement + // Transfer bounding back to controlPointMovement forAll(localControlPointsMovement, iCPM) { controlPointsMovement[pastControlPoints + iCPM] = @@ -270,10 +270,10 @@ void Foam::volBSplinesBase::moveControlPoints label pastControlPoints(0); forAll(volume_, iNURB) { - const label nb = volume_[iNURB].getControlPoints().size(); + const label nb(volume_[iNURB].getControlPoints().size()); vectorField localControlPointsMovement(nb, Zero); - // set localControlPointsMovement + // Set localControlPointsMovement forAll (localControlPointsMovement, iCPM) { localControlPointsMovement[iCPM] = 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 12945ef6a175c1e5b26de01ef184bc210b1cb584..b880a932ce2051bc474cca220800adfeaae9bd94 100644 --- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H +++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/volBSplinesBase/volBSplinesBase.H @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP + Copyright (C) 2007-2020 PCOpt/NTUA + Copyright (C) 2013-2020 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -141,7 +141,7 @@ public: ); //- Bound control points movement - void boundControlPointsMovement(vectorField& controlPointsMovement); + void boundControlPointMovement(vectorField& controlPointsMovement); //- Move control points. No effect on mesh void moveControlPoints(const vectorField& controlPointsMovement);