From 790de0f98e25d5356849aeec8b69a630b03aee13 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Tue, 16 Jan 2024 09:48:48 +0000 Subject: [PATCH 1/4] BUG: gltf corrections. Fixes #3179 - corrected scalar bounds (label->scalar), field limit initialisation - corrected alpha field lookup - updated header documentation --- .../writers/gltf/gltfCoordSetWriter.C | 8 +- .../writers/gltf/gltfCoordSetWriter.H | 82 ++++++++++--------- 2 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.C b/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.C index 86cfd920d0..001a6aaf9a 100644 --- a/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.C +++ b/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2021-2022 OpenCFD Ltd. + Copyright (C) 2021-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -70,7 +70,7 @@ static tmp getBoundedColours const scalar boundMax ) { - const label boundDelta = (boundMax - boundMin + ROOTVSMALL); + const scalar boundDelta = (boundMax - boundMin + ROOTVSMALL); auto tresult = tmp::New(field.size()); auto& result = tresult.ref(); @@ -167,7 +167,7 @@ Foam::scalarMinMax Foam::coordSetWriters::gltfWriter::getFieldLimits { const dictionary fieldDict = fieldInfoDict_.subOrEmptyDict(fieldName); - scalarMinMax limits; + scalarMinMax limits(-GREAT, GREAT); fieldDict.readIfPresent("min", limits.min()); fieldDict.readIfPresent("max", limits.max()); @@ -191,7 +191,7 @@ Foam::coordSetWriters::gltfWriter::getAlphaField { // Not specified } - else if (!eptr->stream().peek().isString()) + else if (!eptr->stream().peek().isWord()) { // Value specified diff --git a/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.H b/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.H index 48f3c9ab61..62ea57d1df 100644 --- a/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.H +++ b/src/meshTools/coordSet/writers/gltf/gltfCoordSetWriter.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2021-2022 OpenCFD Ltd. + Copyright (C) 2021-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -45,24 +45,27 @@ Description \verbatim formatOptions { - // Apply colours flag (yes | no ) [optional] - colours yes; - - // List of options per field - fieldInfo + gltf { - p + // Apply colours flag (yes | no ) [optional] + colour yes; + + // List of options per field + fieldInfo { - // Colour map [optional] - colourMap ; + p + { + // Colour map [optional] + colourMap ; - // Colour map minimum and maximum limits [optional] - // Uses field min and max if not specified - min 0; - max 1; + // Colour map minimum and maximum limits [optional] + // Uses field min and max if not specified + min 0; + max 1; - // Alpha channel [optional] () - alpha 0.5; + // Alpha channel [optional] () + alpha 0.5; + } } } } @@ -73,35 +76,38 @@ Description \verbatim formatOptions { - // Apply colours flag (yes | no) [optional] - colours yes; - - // Animate tracks (yes | no) [optional] - animate yes; - - // Animation properties [optional] - animationInfo + gltf { - // Colour map [optional] - colourMap ; + // Apply colours flag (yes | no) [optional] + colour yes; - // Colour [optional] ( | uniform | field) - colour (1 0 0); // RGB in range [0-1] + // Animate tracks (yes | no) [optional] + animate yes; - //colour uniform; - //colourValue (1 0 0); // RGB in range [0-1] + // Animation properties [optional] + animationInfo + { + // Colour map [optional] + colourMap ; - //colour field; - //colourField d; + // Colour [optional] ( | uniform | field) + colour (1 0 0); // RGB in range [0-1] - // Colour map minimum and maximum limits [optional] - // Note: for colour = field option - // Uses field min and max if not specified - min 0; - max 1; + //colour uniform; + //colourValue (1 0 0); // RGB in range [0-1] - // Alpha channel [optional] () - alpha 0.5; + //colour field; + //colourField d; + + // Colour map minimum and maximum limits [optional] + // Note: for colour = field option + // Uses field min and max if not specified + min 0; + max 1; + + // Alpha channel [optional] () + alpha 0.5; + } } } \endverbatim From b2532e7769827c4383dcb90de2a524cf0b760c17 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Fri, 7 Jun 2024 12:22:07 +0100 Subject: [PATCH 2/4] BUG: extractEulerianParticles - corrected patch index. Fixes #2707 --- .../extractEulerianParticlesTemplates.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticlesTemplates.C b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticlesTemplates.C index 6e6c20cc20..5ef049f3d6 100644 --- a/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticlesTemplates.C +++ b/src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticlesTemplates.C @@ -43,7 +43,7 @@ Type Foam::functionObjects::extractEulerianParticles::faceValue { label patchi = patchIDs_[localFacei]; label pFacei = patchFaceIDs_[localFacei]; - if (patchi != 0) + if (patchi != -1) { return field.boundaryField()[patchi][pFacei]; } From 51a34f5abc8b5dd57c167f5d85ed848e282fb1f0 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Fri, 7 Jun 2024 20:47:35 +0100 Subject: [PATCH 3/4] BUG: ThermoSurfaceFilm - corrected FA field caching for Cp. Fixes #3017 --- .../SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C index 6e8d89a8c8..29d21254cc 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C @@ -302,7 +302,7 @@ void Foam::ThermoSurfaceFilm::cacheFilmFields TFilmPatch_ = film.Tf().primitiveField(); // Direct copy (one-to-one mapping) - TFilmPatch_ = film.Cp().primitiveField(); + CpFilmPatch_ = film.Cp().primitiveField(); } From 2ef96e9e4391816f5a7aafb840099625c03da9d0 Mon Sep 17 00:00:00 2001 From: Vaggelis Papoutsis Date: Mon, 10 Jun 2024 14:52:58 +0300 Subject: [PATCH 4/4] BUG: adjointRotatingWallVelocity causes sensitivities to crash. Fixes #3180 --- .../incompressibleAdjointSolver.C | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolvers/incompressible/incompressibleAdjointSolver/incompressibleAdjointSolver.C b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolvers/incompressible/incompressibleAdjointSolver/incompressibleAdjointSolver.C index cd6cc6839d..fa3770a874 100644 --- a/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolvers/incompressible/incompressibleAdjointSolver/incompressibleAdjointSolver.C +++ b/src/optimisation/adjointOptimisation/adjoint/solvers/adjointSolvers/incompressible/incompressibleAdjointSolver/incompressibleAdjointSolver.C @@ -420,19 +420,21 @@ void Foam::incompressibleAdjointSolver::accumulateBCSensitivityIntegrand fvPatchVectorField& Uab = UaBoundary[patchI]; if (isA(Uab)) { - const fvPatch& patch = mesh_.boundary()[patchI]; - tmp tnf = patch.nf(); - const scalarField& magSf = patch.magSf(); + tmp dxdbMult = + refCast(Uab).dxdbMult(); + if (dxdbMult) + { + const fvPatch& patch = mesh_.boundary()[patchI]; + tmp tnf = patch.nf(); + const scalarField& magSf = patch.magSf(); - tmp DvDbMult = - nuEffBoundary[patchI]*(Uab.snGrad() + (gradUabf[patchI] & tnf)) - // - (nf*pa.boundaryField()[patchI]) - + adjointTurbulence().adjointMomentumBCSource()[patchI]; - bcDxDbMult()[patchI] += - ( - DvDbMult - & refCast(Uab).dxdbMult() - )*magSf*dt; + tmp DvDbMult = + nuEffBoundary[patchI] + *(Uab.snGrad() + (gradUabf[patchI] & tnf)) + // - (nf*pa.boundaryField()[patchI]) + + adjointTurbulence().adjointMomentumBCSource()[patchI]; + bcDxDbMult()[patchI] += (DvDbMult & dxdbMult())*magSf*dt; + } } } }