From 488cfd594665a0515bb5a1672ec0b3f5d714bb2e Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Tue, 16 Apr 2013 10:40:16 +0100
Subject: [PATCH] ENH: dummy agglomeration method for testing:
 dummyAgglomeration

---
 src/OpenFOAM/Make/files                       |  4 +
 .../dummyAgglomeration/dummyAgglomeration.C   | 86 +++++++++++++++++
 .../dummyAgglomeration/dummyAgglomeration.H   | 93 +++++++++++++++++++
 3 files changed, 183 insertions(+)
 create mode 100644 src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.C
 create mode 100644 src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.H

diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 43ac4822abf..2559fe7344f 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -316,6 +316,10 @@ $(pairGAMGAgglomeration)/pairGAMGAgglomerationCombineLevels.C
 algebraicPairGAMGAgglomeration = $(GAMGAgglomerations)/algebraicPairGAMGAgglomeration
 $(algebraicPairGAMGAgglomeration)/algebraicPairGAMGAgglomeration.C
 
+dummyAgglomeration = $(GAMGAgglomerations)/dummyAgglomeration
+$(dummyAgglomeration)/dummyAgglomeration.C
+
+
 meshes/lduMesh/lduMesh.C
 meshes/lduMesh/lduPrimitiveMesh.C
 
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.C
new file mode 100644
index 00000000000..1c38f538ecf
--- /dev/null
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "dummyAgglomeration.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(dummyAgglomeration, 0);
+
+    addToRunTimeSelectionTable
+    (
+        GAMGAgglomeration,
+        dummyAgglomeration,
+        lduMesh
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dummyAgglomeration::dummyAgglomeration
+(
+    const lduMesh& mesh,
+    const dictionary& controlDict
+)
+:
+    GAMGAgglomeration(mesh, controlDict),
+    nLevels_(readLabel(controlDict.lookup("nLevels")))
+{
+    // Get the finest-level interfaces from the mesh
+    interfaceLevels_.set
+    (
+        0,
+        new lduInterfacePtrsList(mesh.interfaces())
+    );
+
+    const label nCoarseCells = mesh.lduAddr().size();
+
+    for
+    (
+        label nCreatedLevels = 0;
+        nCreatedLevels < nLevels_;
+        nCreatedLevels++
+    )
+    {
+        nCells_[nCreatedLevels] = nCoarseCells;
+        restrictAddressing_.set
+        (
+            nCreatedLevels,
+            new labelField(identity(nCoarseCells))
+        );
+
+        agglomerateLduAddressing(nCreatedLevels);
+    }
+
+    // Shrink the storage of the levels to those created
+    compactLevels(nLevels_);
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.H
new file mode 100644
index 00000000000..03a6b53e45d
--- /dev/null
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/dummyAgglomeration/dummyAgglomeration.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dummyAgglomeration
+
+Description
+    Agglomerate without combining cells. Used for testing.
+
+SourceFiles
+    dummyAgglomeration.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef dummyAgglomeration_H
+#define dummyAgglomeration_H
+
+#include "GAMGAgglomeration.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class dummyAgglomeration Declaration
+\*---------------------------------------------------------------------------*/
+
+class dummyAgglomeration
+:
+    public GAMGAgglomeration
+{
+    // Private data
+
+        //- Preset number of levels
+        label nLevels_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        dummyAgglomeration(const dummyAgglomeration&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const dummyAgglomeration&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("dummy");
+
+
+    // Constructors
+
+        //- Construct given mesh and controls
+        dummyAgglomeration
+        (
+            const lduMesh& mesh,
+            const dictionary& controlDict
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
-- 
GitLab