diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointBoundaryCondition/adjointBoundaryConditionTemplates.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointBoundaryCondition/adjointBoundaryConditionTemplates.C deleted file mode 100644 index 6892333428..0000000000 --- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointBoundaryCondition/adjointBoundaryConditionTemplates.C +++ /dev/null @@ -1,167 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | www.openfoam.com - \\/ M anipulation | -------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP - Copyright (C) 2019 OpenCFD Ltd. -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -\*---------------------------------------------------------------------------*/ - -#include "emptyFvPatch.H" -#include "adjointBoundaryCondition.H" -#include "adjointSolverManager.H" -#include "HashTable.H" -#include "surfaceInterpolationScheme.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - -template -tmp -< - Field::type> -> -adjointBoundaryCondition::computePatchGrad(word name) -{ - // Return field - typedef typename outerProduct::type GradType; - auto tresGrad = tmp>::New(patch_.size(), Zero); - auto& resGrad = tresGrad.ref(); - - const labelList& faceCells = patch_.faceCells(); - const fvMesh& mesh = patch_.boundaryMesh().mesh(); - const cellList& cells = mesh.cells(); - - // Go through the surfaceInterpolation scheme defined in gradSchemes for - // consistency - const GeometricField& field = - mesh.lookupObject(name); - - // Gives problems when grad(AdjointVar) is computed using a limited scheme, - // since it is not possible to know a priori how many words to expect in the - // stream. - // Interpolation scheme is now read through interpolation schemes. - /* - word gradSchemeName ("grad(" + name + ')'); - Istream& is = mesh.gradScheme(gradSchemeName); - word schemeData(is); - */ - - tmp> tinterpScheme - ( - surfaceInterpolationScheme::New - ( - mesh, - mesh.interpolationScheme("interpolate(" + name + ")") - ) - ); - - GeometricField surfField - ( - tinterpScheme().interpolate(field) - ); - - // Auxiliary fields - const surfaceVectorField& Sf = mesh.Sf(); - tmp tnf = patch_.nf(); - const vectorField& nf = tnf(); - const scalarField& V = mesh.V(); - const labelUList& owner = mesh.owner(); - - // Compute grad value of cell adjacent to the boundary - forAll(faceCells, fI) - { - const label cI = faceCells[fI]; - const cell& cellI = cells[cI]; - for (const label faceI : cellI) // global face numbering - { - label patchID = mesh.boundaryMesh().whichPatch(faceI); - if (patchID == -1) //face is internal - { - const label own = owner[faceI]; - tensor flux = Sf[faceI]*surfField[faceI]; - if (cI == own) - { - resGrad[fI] += flux; - } - else - { - resGrad[fI] -= flux; - } - } - else // Face is boundary. Covers coupled patches as well - { - if (!isA(mesh.boundary()[patchID])) - { - const fvPatch& patchForFlux = mesh.boundary()[patchID]; - const label boundaryFaceI = faceI - patchForFlux.start(); - const vectorField& Sfb = Sf.boundaryField()[patchID]; - resGrad[fI] += - Sfb[boundaryFaceI] - *surfField.boundaryField()[patchID][boundaryFaceI]; - } - } - } - resGrad[fI] /= V[cI]; - } - - // This has concluded the computation of the grad at the cell next to the - // boundary. We now need to compute the grad at the boundary face - const fvPatchField& bField = field.boundaryField()[patch_.index()]; - resGrad = nf*bField.snGrad() + (resGrad - nf*(nf & resGrad)); - - return tresGrad; -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template -adjointBoundaryCondition::adjointBoundaryCondition -( - const fvPatch& p, - const DimensionedField& iF, - const word& solverName -) -: - patch_(p), - managerName_("objectiveManager" + solverName), - adjointSolverName_(solverName), - simulationType_("incompressible"), - boundaryContrPtr_(nullptr), - addATCUaGradUTerm_(nullptr) -{ - // Set the boundaryContribution pointer - setBoundaryContributionPtr(); -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointZeroInlet/adjointZeroInletFvPatchFieldsFwd.C b/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointZeroInlet/adjointZeroInletFvPatchFieldsFwd.C deleted file mode 100644 index e043abf8e3..0000000000 --- a/src/optimisation/adjointOptimisation/adjoint/adjointBoundaryConditions/adjointZeroInlet/adjointZeroInletFvPatchFieldsFwd.C +++ /dev/null @@ -1,54 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | www.openfoam.com - \\/ M anipulation | -------------------------------------------------------------------------------- - Copyright (C) 2007-2019 PCOpt/NTUA - Copyright (C) 2013-2019 FOSS GP - Copyright (C) 2019 OpenCFD Ltd. -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -\*---------------------------------------------------------------------------*/ - -#ifndef adjointZeroInletFvPatchFieldsFwd_H -#define adjointZeroInletFvPatchFieldsFwd_H - -#include "fieldTypes.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -template class adjointZeroInletFvPatchField; - -makePatchTypeFieldTypedefs(adjointZeroInlet); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.C b/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.C index c9670beb9d..5a379c1ed0 100644 --- a/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.C +++ b/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.C @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2020 PCOpt/NTUA - Copyright (C) 2013-2020 FOSS GP + Copyright (C) 2007-2021 PCOpt/NTUA + Copyright (C) 2013-2021 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -252,7 +252,7 @@ scalar objectiveManager::print() } -bool objectiveManager::write +bool objectiveManager::writeObjectives ( const scalar weightedObjective, const bool valid @@ -289,7 +289,7 @@ void objectiveManager::updateAndWrite() updateNormalizationFactor(); update(); scalar weightedObjective = print(); - write(weightedObjective); + writeObjectives(weightedObjective); } diff --git a/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.H b/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.H index 943b4d41fd..0aeacc6b48 100644 --- a/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.H +++ b/src/optimisation/adjointOptimisation/adjoint/objectiveManager/objectiveManager/objectiveManager.H @@ -5,8 +5,8 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2007-2020 PCOpt/NTUA - Copyright (C) 2013-2020 FOSS GP + Copyright (C) 2007-2021 PCOpt/NTUA + Copyright (C) 2013-2021 FOSS GP Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License @@ -146,7 +146,7 @@ public: scalar print(); //- Write objective function history - virtual bool write + virtual bool writeObjectives ( const scalar weightedObjective, const bool valid = true