From c983a581d49f598d7bdef86887b34cc1808b1666 Mon Sep 17 00:00:00 2001 From: mattijs Date: Sat, 20 Apr 2013 20:59:24 +0100 Subject: [PATCH] ENH: GAMGProcAgglomeration: check for parallel running --- src/OpenFOAM/Make/files | 2 + .../GAMGAgglomeration/GAMGAgglomeration.C | 5 +- .../eagerGAMGProcAgglomeration.C | 168 ++++++++++++++++++ .../eagerGAMGProcAgglomeration.H | 113 ++++++++++++ .../manualGAMGProcAgglomeration.C | 151 ++++++++-------- .../masterCoarsestGAMGProcAgglomeration.C | 66 +++---- 6 files changed, 402 insertions(+), 103 deletions(-) create mode 100644 src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/eagerGAMGProcAgglomeration/eagerGAMGProcAgglomeration.C create mode 100644 src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/eagerGAMGProcAgglomeration/eagerGAMGProcAgglomeration.H diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index 321855de69..554e890db9 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -328,6 +328,8 @@ masterCoarsestGAMGProcAgglomeration = $(GAMGProcAgglomerations)/masterCoarsestGA $(masterCoarsestGAMGProcAgglomeration)/masterCoarsestGAMGProcAgglomeration.C manualGAMGProcAgglomeration = $(GAMGProcAgglomerations)/manualGAMGProcAgglomeration $(manualGAMGProcAgglomeration)/manualGAMGProcAgglomeration.C +eagerGAMGProcAgglomeration = $(GAMGProcAgglomerations)/eagerGAMGProcAgglomeration +$(eagerGAMGProcAgglomeration)/eagerGAMGProcAgglomeration.C /* cellFaceRatioGAMGProcAgglomeration = $(GAMGProcAgglomerations)/cellFaceRatioGAMGProcAgglomeration $(cellFaceRatioGAMGProcAgglomeration)/cellFaceRatioGAMGProcAgglomeration.C 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 324ace4c91..a572f5ff43 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C @@ -121,7 +121,10 @@ Foam::GAMGAgglomeration::GAMGAgglomeration ), procAgglomeratorPtr_ ( - controlDict.found("processorAgglomerator") + ( + (UPstream::nProcs(mesh.comm()) > 1) + && controlDict.found("processorAgglomerator") + ) ? GAMGProcAgglomeration::New ( controlDict.lookup("processorAgglomerator"), diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/eagerGAMGProcAgglomeration/eagerGAMGProcAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/eagerGAMGProcAgglomeration/eagerGAMGProcAgglomeration.C new file mode 100644 index 0000000000..c1f166d1ec --- /dev/null +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGProcAgglomerations/eagerGAMGProcAgglomeration/eagerGAMGProcAgglomeration.C @@ -0,0 +1,168 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 "eagerGAMGProcAgglomeration.H" +#include "addToRunTimeSelectionTable.H" +#include "GAMGAgglomeration.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(eagerGAMGProcAgglomeration, 0); + + addToRunTimeSelectionTable + ( + GAMGProcAgglomeration, + eagerGAMGProcAgglomeration, + GAMGAgglomeration + ); +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::eagerGAMGProcAgglomeration::eagerGAMGProcAgglomeration +( + GAMGAgglomeration& agglom, + const dictionary& controlDict +) +: + GAMGProcAgglomeration(agglom, controlDict), + mergeLevels_(controlDict.lookupOrDefault