From e1b04cb6a70446211022171579b893aaef42e3fd Mon Sep 17 00:00:00 2001
From: Vaggelis Papoutsis <vaggelisp@gmail.com>
Date: Fri, 2 May 2025 13:03:33 +0300
Subject: [PATCH] BUG: wrong cellZone addressing in uniformityCellZone (fixes
 #3360)

The mean value, variance and volume fields for each zone were accessed
using the wrong indices
---
 .../objectiveUniformityCellZone.C             | 24 +++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone/objectiveUniformityCellZone.C b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone/objectiveUniformityCellZone.C
index 7314896024b..711d5668c49 100644
--- a/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone/objectiveUniformityCellZone.C
+++ b/src/optimisation/adjointOptimisation/adjoint/objectives/incompressible/objectiveUniformityCellZone/objectiveUniformityCellZone.C
@@ -5,8 +5,8 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2007-2023 PCOpt/NTUA
-    Copyright (C) 2013-2023 FOSS GP
+    Copyright (C) 2007-2025 PCOpt/NTUA
+    Copyright (C) 2013-2025 FOSS GP
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -118,11 +118,11 @@ scalar objectiveUniformityCellZone::J()
     const volVectorField& U = vars_.UInst();
     const scalarField& V = mesh_.V().field();
 
-    for (const label zI : zones_)
+    forAll(zones_, zI)
     {
-        const cellZone& zoneI = mesh_.cellZones()[zI];
-        scalarField VZone(V, zoneI);
-        vectorField UZone(U.primitiveField(), zoneI);
+        const cellZone& cz = mesh_.cellZones()[zones_[zI]];
+        scalarField VZone(V, cz);
+        vectorField UZone(U.primitiveField(), cz);
         volZone_[zI] = gSum(VZone);
         UMean_[zI] = gSum(UZone*VZone)/volZone_[zI];
         UVar_[zI] = gSum(magSqr(UZone - UMean_[zI])*VZone)/volZone_[zI];
@@ -138,10 +138,10 @@ void objectiveUniformityCellZone::update_dJdv()
 {
     const volVectorField& U = vars_.U();
 
-    for (const label zI : zones_)
+    forAll(zones_, zI)
     {
-        const cellZone& zoneI = mesh_.cellZones()[zI];
-        for (const label cellI : zoneI)
+        const cellZone& cz = mesh_.cellZones()[zones_[zI]];
+        for (const label cellI : cz)
         {
             dJdvPtr_()[cellI] = (U[cellI] - UMean_[zI])/volZone_[zI];
         }
@@ -154,10 +154,10 @@ void objectiveUniformityCellZone::update_divDxDbMultiplier()
     volScalarField& divDxDbMult = divDxDbMultPtr_();
     const volVectorField& U = vars_.U();
 
-    for (const label zI : zones_)
+    forAll(zones_, zI)
     {
-        const cellZone& zoneI = mesh_.cellZones()[zI];
-        for (const label cellI : zoneI)
+        const cellZone& cz = mesh_.cellZones()[zones_[zI]];
+        for (const label cellI : cz)
         {
             divDxDbMult[cellI] =
                 0.5*(magSqr(U[cellI] - UMean_[zI]) - UVar_[zI])/volZone_[zI];
-- 
GitLab