From 4eaa76c83523d0e6af64fbf185721b3acbae1bd4 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 18 Jun 2025 17:14:38 +0100 Subject: [PATCH 1/2] ENH: GAMGAgglomeration: optional name. Fixes #3332 --- .../GAMGAgglomeration/GAMGAgglomeration.C | 33 ++++++++++++++++--- .../GAMGAgglomeration/GAMGAgglomeration.H | 2 ++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C index 46a8b07733..d41b84ac5b 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019-2024 OpenCFD Ltd. + Copyright (C) 2019-2025 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -243,7 +243,15 @@ Foam::GAMGAgglomeration::GAMGAgglomeration const dictionary& controlDict ) : - MeshObject_type(mesh), + MeshObject_type + ( + controlDict.getOrDefault + ( + "name", + GAMGAgglomeration::typeName + ), + mesh + ), maxLevels_(50), @@ -308,10 +316,17 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New const dictionary& controlDict ) { + + + const GAMGAgglomeration* agglomPtr = mesh.thisDb().cfindObject ( - GAMGAgglomeration::typeName + controlDict.getOrDefault + ( + "name", + GAMGAgglomeration::typeName + ) ); if (agglomPtr) @@ -373,7 +388,11 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New const GAMGAgglomeration* agglomPtr = mesh.thisDb().cfindObject ( - GAMGAgglomeration::typeName + controlDict.getOrDefault + ( + "name", + GAMGAgglomeration::typeName + ) ); if (agglomPtr) @@ -431,7 +450,11 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New const GAMGAgglomeration* agglomPtr = mesh.thisDb().cfindObject ( - GAMGAgglomeration::typeName + controlDict.getOrDefault + ( + "name", + GAMGAgglomeration::typeName + ) ); if (agglomPtr) diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H index e45d70b5a7..3f3e18a118 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H @@ -40,6 +40,8 @@ Description cacheAgglomeration yes; // Optionally update every updateInterval mesh motion. Default is 1. updateInterval 10; + // Optional name (default is GAMGAgglomeration) + //name pAgglomeration; // Optionally agglomerate coarsest-level across processors processorAgglomerator masterCoarsest; From c6f87c961ab565fc65c26542ff1e233374a19ef9 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 8 Jul 2025 14:32:39 +0100 Subject: [PATCH 2/2] ENH: GAMGAgglomeration: updateInterval also for static mesh. Fixes #3387 --- .../GAMGAgglomeration/GAMGAgglomeration.C | 4 ++-- .../GAMGAgglomeration/GAMGAgglomeration.H | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C index d41b84ac5b..7dfeea52c6 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C @@ -397,7 +397,7 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New if (agglomPtr) { - if (agglomPtr->requireUpdate_) + if (agglomPtr->requireUpdate_ || agglomPtr->requiresUpdate()) { mesh.thisDb().checkOut(const_cast(agglomPtr)); return GAMGAgglomeration::New(matrix, controlDict); @@ -459,7 +459,7 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New if (agglomPtr) { - if (agglomPtr->requireUpdate_) + if (agglomPtr->requireUpdate_ || agglomPtr->requiresUpdate()) { mesh.thisDb().checkOut(const_cast(agglomPtr)); return GAMGAgglomeration::New(mesh, controlDict); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H index 3f3e18a118..50d68fb581 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019-2023 OpenCFD Ltd. + Copyright (C) 2019-2025 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -38,7 +38,9 @@ Description // Whether to cache the agglomeration cacheAgglomeration yes; - // Optionally update every updateInterval mesh motion. Default is 1. + // Optionally update every updateInterval time steps. Default is 1. + // - only applies if cacheAgglomeration + // - applies also for static mesh cases updateInterval 10; // Optional name (default is GAMGAgglomeration) //name pAgglomeration; @@ -190,7 +192,7 @@ protected: // Protected Member Functions //- Does the agglomeration need to be fully updated? - bool requiresUpdate() const; + virtual bool requiresUpdate() const; //- Assemble coarse mesh addressing void agglomerateLduAddressing(const label fineLevelIndex);