Compare commits

...

2 Commits

2 changed files with 37 additions and 10 deletions

View File

@ -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<word>
(
"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>
(
GAMGAgglomeration::typeName
controlDict.getOrDefault<word>
(
"name",
GAMGAgglomeration::typeName
)
);
if (agglomPtr)
@ -373,12 +388,16 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New
const GAMGAgglomeration* agglomPtr =
mesh.thisDb().cfindObject<GAMGAgglomeration>
(
GAMGAgglomeration::typeName
controlDict.getOrDefault<word>
(
"name",
GAMGAgglomeration::typeName
)
);
if (agglomPtr)
{
if (agglomPtr->requireUpdate_)
if (agglomPtr->requireUpdate_ || agglomPtr->requiresUpdate())
{
mesh.thisDb().checkOut(const_cast<GAMGAgglomeration*>(agglomPtr));
return GAMGAgglomeration::New(matrix, controlDict);
@ -431,12 +450,16 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New
const GAMGAgglomeration* agglomPtr =
mesh.thisDb().cfindObject<GAMGAgglomeration>
(
GAMGAgglomeration::typeName
controlDict.getOrDefault<word>
(
"name",
GAMGAgglomeration::typeName
)
);
if (agglomPtr)
{
if (agglomPtr->requireUpdate_)
if (agglomPtr->requireUpdate_ || agglomPtr->requiresUpdate())
{
mesh.thisDb().checkOut(const_cast<GAMGAgglomeration*>(agglomPtr));
return GAMGAgglomeration::New(mesh, controlDict);

View File

@ -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,8 +38,12 @@ 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;
// Optionally agglomerate coarsest-level across processors
processorAgglomerator masterCoarsest;
@ -188,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);