diff --git a/src/optimisation/adjointOptimisation/adjoint/optimisation/optimisationManager/optimisationManager/optimisationManager.C b/src/optimisation/adjointOptimisation/adjoint/optimisation/optimisationManager/optimisationManager/optimisationManager.C index 0af90e4b7f..bfcf84083e 100644 --- a/src/optimisation/adjointOptimisation/adjoint/optimisation/optimisationManager/optimisationManager/optimisationManager.C +++ b/src/optimisation/adjointOptimisation/adjoint/optimisation/optimisationManager/optimisationManager/optimisationManager.C @@ -61,13 +61,19 @@ Foam::optimisationManager::optimisationManager(fvMesh& mesh) managerType_(get("optimisationManager")), optType_(nullptr) { - const dictionary& primalSolversDict = subDict("primalSolvers"); + dictionary& primalSolversDict = subDict("primalSolvers"); const wordList& primalSolverNames = primalSolversDict.toc(); // Construct primal solvers primalSolvers_.setSize(primalSolverNames.size()); forAll(primalSolvers_, solveri) { + dictionary& solverDict = + primalSolversDict.subDict(primalSolverNames[solveri]); + if (primalSolvers_.size() > 1) + { + solverDict.add("useSolverNameForFields", true); + } primalSolvers_.set ( solveri, @@ -75,7 +81,7 @@ Foam::optimisationManager::optimisationManager(fvMesh& mesh) ( mesh, managerType_, - primalSolversDict.subDict(primalSolverNames[solveri]) + solverDict ) ); } @@ -86,6 +92,7 @@ Foam::optimisationManager::optimisationManager(fvMesh& mesh) adjointSolverManagers_.setSize(adjointManagerNames.size()); label nAdjointSolvers(0); + bool overrideUseSolverName(adjointSolverManagers_.size() > 1); forAll(adjointSolverManagers_, manageri) { adjointSolverManagers_.set @@ -95,7 +102,8 @@ Foam::optimisationManager::optimisationManager(fvMesh& mesh) ( mesh, managerType_, - adjointManagersDict.subDict(adjointManagerNames[manageri]) + adjointManagersDict.subDict(adjointManagerNames[manageri]), + overrideUseSolverName ) ); nAdjointSolvers += adjointSolverManagers_[manageri].nAdjointSolvers(); diff --git a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.C b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.C index e4d8c3813d..0323238094 100644 --- a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.C +++ b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.C @@ -43,7 +43,8 @@ Foam::adjointSolverManager::adjointSolverManager ( fvMesh& mesh, const word& managerType, - const dictionary& dict + const dictionary& dict, + bool overrideUseSolverName ) : regIOobject @@ -70,7 +71,8 @@ Foam::adjointSolverManager::adjointSolverManager dict.getOrDefault("operatingPointWeight", 1) ) { - const dictionary& adjointSolversDict = dict.subDict("adjointSolvers"); + dictionary& adjointSolversDict = + const_cast(dict.subDict("adjointSolvers")); const wordList adjSolverNames = adjointSolversDict.toc(); adjointSolvers_.setSize(adjSolverNames.size()); @@ -80,6 +82,12 @@ Foam::adjointSolverManager::adjointSolverManager label nConstraints(0); forAll(adjSolverNames, namei) { + dictionary& solverDict = + adjointSolversDict.subDict(adjSolverNames[namei]); + if (overrideUseSolverName || adjointSolvers_.size() > 1) + { + solverDict.add("useSolverNameForFields", true); + } adjointSolvers_.set ( namei, @@ -87,7 +95,7 @@ Foam::adjointSolverManager::adjointSolverManager ( mesh_, managerType, - adjointSolversDict.subDict(adjSolverNames[namei]), + solverDict, primalSolverName_ ) ); diff --git a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.H b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.H index 9f91025dad..5ebb2bcbc6 100644 --- a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.H +++ b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolverManager/adjointSolverManager.H @@ -100,7 +100,8 @@ public: ( fvMesh& mesh, const word& managerType, - const dictionary& dict + const dictionary& dict, + bool overrideUseSolverName ); diff --git a/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/naca0012/turbulent/liftFullSetup/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/naca0012/turbulent/liftFullSetup/system/optimisationDict index 2e834a6cba..c08aec026a 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/naca0012/turbulent/liftFullSetup/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/naca0012/turbulent/liftFullSetup/system/optimisationDict @@ -23,7 +23,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields false; solutionControls { nIters 3000; @@ -52,7 +51,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields false; computeSensitivities true; // manage objectives diff --git a/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/sbend/turbulent/lowRe/multiPoint/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/sbend/turbulent/lowRe/multiPoint/system/optimisationDict index 05982c44bc..49a5104d40 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/sbend/turbulent/lowRe/multiPoint/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/sensitivityMaps/sbend/turbulent/lowRe/multiPoint/system/optimisationDict @@ -23,7 +23,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields true; solutionControls { @@ -41,7 +40,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields true; solutionControls { @@ -71,7 +69,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ @@ -124,7 +121,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/naca0012/laminar/lift/opt/constraintProjection/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/naca0012/laminar/lift/opt/constraintProjection/system/optimisationDict index 8764467e61..10a6d3d46d 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/naca0012/laminar/lift/opt/constraintProjection/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/naca0012/laminar/lift/opt/constraintProjection/system/optimisationDict @@ -49,7 +49,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ @@ -97,7 +96,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; isConstraint true; // manage objectives diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/constrained/SQP/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/constrained/SQP/system/optimisationDict index 24c1dc50e2..cb234b865c 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/constrained/SQP/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/laminar/opt/constrained/SQP/system/optimisationDict @@ -49,7 +49,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ @@ -91,7 +90,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; isConstraint true; // manage objectives //------------------ diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/BFGS/multiPoint/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/BFGS/multiPoint/system/optimisationDict index 1dc707dd00..5cdbced928 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/BFGS/multiPoint/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/opt/BFGS/multiPoint/system/optimisationDict @@ -23,7 +23,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields true; solutionControls { @@ -41,7 +40,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields true; solutionControls { @@ -71,7 +69,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ @@ -124,7 +121,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields true; // manage objectives //------------------ diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/primalAdjointFullSetup/system/optimisationDict b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/primalAdjointFullSetup/system/optimisationDict index c008458f5a..a3b1707b79 100644 --- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/primalAdjointFullSetup/system/optimisationDict +++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/SA/primalAdjointFullSetup/system/optimisationDict @@ -23,7 +23,6 @@ primalSolvers active true; type incompressible; solver simple; - useSolverNameForFields false; solutionControls { @@ -52,7 +51,6 @@ adjointManagers active true; type incompressible; solver adjointSimple; - useSolverNameForFields false; computeSensitivities true; // manage objectives