From 36b0c5ce15eb214105133967e46f1663f228b949 Mon Sep 17 00:00:00 2001 From: Vaggelis Papoutsis <vaggelisp@gmail.com> Date: Thu, 30 Jan 2020 19:17:53 +0200 Subject: [PATCH] ENH: changes in SIBase and derived classes - Added function returning the underlaying surface sensitivities - Added boolean to control whether to write the underlaying sensitivity map (defaults to false) --- .../SIBase/SIBaseIncompressible.C | 21 ++++++++++++++++++- .../SIBase/SIBaseIncompressible.H | 9 ++++++++ .../sensitivityBezierIncompressible.C | 3 +++ .../sensitivityVolBSplinesIncompressible.C | 3 +++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.C index 96465d521af..bb9600eb583 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.C @@ -50,6 +50,8 @@ void SIBase::read() surfaceSensitivity_.read(); includeObjective_ = dict().getOrDefault<bool>("includeObjectiveContribution", true); + writeSensitivityMap_ = + dict().getOrDefault<bool>("writeSensitivityMap", false); // If includeObjective is set to true both here and in the surface // sensitivities, set the one in the latter to false to avoid double @@ -105,7 +107,8 @@ SIBase::SIBase objectiveManager, fvOptionsAdjoint ), - includeObjective_(true) + includeObjective_(true), + writeSensitivityMap_(true) { read(); } @@ -152,6 +155,22 @@ void SIBase::clearSensitivities() } +const sensitivitySurface& SIBase::getSurfaceSensitivities() const +{ + return surfaceSensitivity_; +} + + +void SIBase::write(const word& baseName) +{ + shapeSensitivities::write(baseName); + if (writeSensitivityMap_) + { + surfaceSensitivity_.write(baseName); + } +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace incompressible diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.H b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.H index ee97adac055..cc3342d05bf 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.H +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/SIBase/SIBaseIncompressible.H @@ -72,6 +72,9 @@ protected: // them bool includeObjective_; + //- Write sensitivity map upon write + bool writeSensitivityMap_; + // Protected Member Functions @@ -127,6 +130,12 @@ public: //- Zero sensitivity fields and their constituents virtual void clearSensitivities(); + + //- Return reference to underlaying surface sensitivities + const sensitivitySurface& getSurfaceSensitivities() const; + + //- Write sensitivity map + virtual void write(const word& baseName = word::null); }; diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityBezier/sensitivityBezierIncompressible.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityBezier/sensitivityBezierIncompressible.C index 0f323575924..af41e4fab2f 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityBezier/sensitivityBezierIncompressible.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityBezier/sensitivityBezierIncompressible.C @@ -203,6 +203,9 @@ void sensitivityBezier::clearSensitivities() void sensitivityBezier::write(const word& baseName) { Info<< "Writing control point sensitivities to file" << endl; + // Write sensitivity map + SIBase::write(baseName); + // Write control point sensitivities if (Pstream::master()) { OFstream derivFile 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 66fb1553638..29946a2c035 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/adjointSensitivity/incompressible/sensitivityVolBSplines/sensitivityVolBSplinesIncompressible.C @@ -268,6 +268,9 @@ void sensitivityVolBSplines::clearSensitivities() void sensitivityVolBSplines::write(const word& baseName) { Info<< "Writing control point sensitivities to file" << endl; + // Write sensitivity map + SIBase::write(baseName); + // Write control point sensitivities if (Pstream::master()) { OFstream derivFile -- GitLab