From bd1230eb87d72ad9717d382690359babbc3db552 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 6 Feb 2013 16:44:22 +0000 Subject: [PATCH] ENH: GAMGInterface: added communicator to arguments. Extended UIPstream,UOPstream for user defined communicators --- .../matrices/LUscalarMatrix/LUscalarMatrix.C | 43 +++++++++++++++---- .../matrices/LUscalarMatrix/LUscalarMatrix.H | 5 ++- .../LUscalarMatrix/LUscalarMatrixTemplates.C | 26 +++++++---- .../GAMGAgglomerateLduAddressing.C | 14 +++++- .../GAMGAgglomeration/GAMGAgglomeration.C | 15 +++++++ .../lduMatrix/solvers/GAMG/GAMGSolver.C | 6 +++ .../lduMatrix/solvers/GAMG/GAMGSolverSolve.C | 9 +++- .../processorGAMGInterfaceField.C | 14 +++++- .../interfaces/GAMGInterface/GAMGInterface.H | 14 +++--- .../GAMGInterface/GAMGInterfaceNew.C | 8 ++-- .../cyclicGAMGInterface/cyclicGAMGInterface.C | 5 ++- .../cyclicGAMGInterface/cyclicGAMGInterface.H | 5 ++- .../processorCyclicGAMGInterface.C | 8 ++-- .../processorCyclicGAMGInterface.H | 5 ++- .../processorGAMGInterface.C | 21 +++++++-- .../processorGAMGInterface.H | 10 +++-- .../meshes/lduMesh/lduPrimitiveMesh.H | 37 ++++++++++++++++ src/Pstream/mpi/UIPread.C | 17 +++++++- src/Pstream/mpi/UOPwrite.C | 1 + src/Pstream/mpi/UPstream.C | 4 ++ .../cyclicAMIGAMGInterface.C | 5 ++- .../cyclicAMIGAMGInterface.H | 5 ++- .../regionCoupledBaseGAMGInterface.C | 8 ++-- .../regionCoupledBaseGAMGInterface.H | 5 ++- .../regionCoupledGAMGInterface.C | 8 ++-- .../regionCoupledGAMGInterface.H | 5 ++- .../regionCoupledWallGAMGInterface.C | 8 ++-- .../regionCoupledWallGAMGInterface.H | 5 ++- 28 files changed, 248 insertions(+), 68 deletions(-) diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C index 9957a4dff2..0829e5fb72 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,6 +33,7 @@ License Foam::LUscalarMatrix::LUscalarMatrix(const scalarSquareMatrix& matrix) : + comm_(Pstream::worldComm), scalarSquareMatrix(matrix), pivotIndices_(n()) { @@ -46,10 +47,12 @@ Foam::LUscalarMatrix::LUscalarMatrix const FieldField& interfaceCoeffs, const lduInterfaceFieldPtrsList& interfaces ) +: + comm_(ldum.mesh().comm()) { if (Pstream::parRun()) { - PtrList lduMatrices(Pstream::nProcs()); + PtrList lduMatrices(Pstream::nProcs(comm_)); label lduMatrixi = 0; @@ -64,25 +67,49 @@ Foam::LUscalarMatrix::LUscalarMatrix ) ); - if (Pstream::master()) + +Pout<< "LUscalarMatrix :" + << " comm:" << comm_ + << " master:" << Pstream::master(comm_) << endl; + + if (Pstream::master(comm_)) { for ( int slave=Pstream::firstSlave(); - slave<=Pstream::lastSlave(); + slave<=Pstream::lastSlave(comm_); slave++ ) { +Pout<< "Receiving from " << slave + << " using comm:" << comm_ << endl; lduMatrices.set ( lduMatrixi++, - new procLduMatrix(IPstream(Pstream::scheduled, slave)()) + new procLduMatrix + ( + IPstream + ( + Pstream::scheduled, + slave, + 0, // bufSize + Pstream::msgType(), + comm_ + )() + ) ); } } else { - OPstream toMaster(Pstream::scheduled, Pstream::masterNo()); + OPstream toMaster + ( + Pstream::scheduled, + Pstream::masterNo(), + 0, // bufSize + Pstream::msgType(), + comm_ + ); procLduMatrix cldum ( ldum, @@ -93,7 +120,7 @@ Foam::LUscalarMatrix::LUscalarMatrix } - if (Pstream::master()) + if (Pstream::master(comm_)) { label nCells = 0; forAll(lduMatrices, i) @@ -114,7 +141,7 @@ Foam::LUscalarMatrix::LUscalarMatrix convert(ldum, interfaceCoeffs, interfaces); } - if (Pstream::master()) + if (Pstream::master(comm_)) { pivotIndices_.setSize(n()); LUDecompose(*this, pivotIndices_); diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.H b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.H index 2601439334..b01c88224e 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.H +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,6 +58,9 @@ class LUscalarMatrix { // Private data + //- Communicator to use + const label comm_; + //- Processor matrix offsets labelList procOffsets_; diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C index 025e2005f6..8948d37675 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrixTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,7 +34,7 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const { Field completeSourceSol(n()); - if (Pstream::master()) + if (Pstream::master(comm_)) { typename Field::subField ( @@ -45,7 +45,7 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const for ( int slave=Pstream::firstSlave(); - slave<=Pstream::lastSlave(); + slave<=Pstream::lastSlave(comm_); slave++ ) { @@ -57,7 +57,9 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const ( &(completeSourceSol[procOffsets_[slave]]) ), - (procOffsets_[slave + 1] - procOffsets_[slave])*sizeof(Type) + (procOffsets_[slave+1]-procOffsets_[slave])*sizeof(Type), + Pstream::msgType(), + comm_ ); } } @@ -68,11 +70,13 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const Pstream::scheduled, Pstream::masterNo(), reinterpret_cast(sourceSol.begin()), - sourceSol.byteSize() + sourceSol.byteSize(), + Pstream::msgType(), + comm_ ); } - if (Pstream::master()) + if (Pstream::master(comm_)) { LUBacksubstitute(*this, pivotIndices_, completeSourceSol); @@ -85,7 +89,7 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const for ( int slave=Pstream::firstSlave(); - slave<=Pstream::lastSlave(); + slave<=Pstream::lastSlave(comm_); slave++ ) { @@ -97,7 +101,9 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const ( &(completeSourceSol[procOffsets_[slave]]) ), - (procOffsets_[slave + 1] - procOffsets_[slave])*sizeof(Type) + (procOffsets_[slave + 1]-procOffsets_[slave])*sizeof(Type), + Pstream::msgType(), + comm_ ); } } @@ -108,7 +114,9 @@ void Foam::LUscalarMatrix::solve(Field& sourceSol) const Pstream::scheduled, Pstream::masterNo(), reinterpret_cast(sourceSol.begin()), - sourceSol.byteSize() + sourceSol.byteSize(), + Pstream::msgType(), + comm_ ); } } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C index 1cef9aabb2..2cfcc5060f 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomerateLduAddressing.C @@ -240,6 +240,15 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing Pstream::waitRequests(); } + + // Allocate a communicator for the coarse level + label coarseComm = UPstream::allocateCommunicator + ( + fineMesh.comm(), + identity(UPstream::nProcs(fineMesh.comm())) //TBD + ); + + // Add the coarse level forAll(fineInterfaces, inti) { @@ -259,7 +268,8 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing Pstream::nonBlocking, restrictMap ), - fineLevelIndex + fineLevelIndex, + coarseComm ).ptr() ); @@ -280,7 +290,7 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing coarseInterfaceAddr, coarseInterfaces, fineMeshAddr.patchSchedule(), - fineMesh.comm(), + coarseComm, true ) ); 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 d7c8e79080..a724e513f7 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/GAMGAgglomerations/GAMGAgglomeration/GAMGAgglomeration.C @@ -196,6 +196,16 @@ const Foam::GAMGAgglomeration& Foam::GAMGAgglomeration::New Foam::GAMGAgglomeration::~GAMGAgglomeration() { + // Temporary store the user-defined communicators so we can delete them + labelList communicators(meshLevels_.size()); + forAll(meshLevels_, leveli) + { + communicators[leveli] = meshLevels_[leveli].comm(); + } + + Pout<< "~GAMGAgglomeration() : current communicators:" << communicators + << endl; + // Clear the interface storage by hand. // It is a list of ptrs not a PtrList for consistency of the interface for (label leveli=1; leveli= 2) { - coarseSolverPerf.print(Info(matrix().mesh().comm())); + coarseSolverPerf.print(Info(coarseComm)); } } + + UPstream::warnComm = oldWarn; } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C index 989cdff127..a653bc71d5 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaceFields/processorGAMGInterfaceField/processorGAMGInterfaceField.C @@ -79,6 +79,9 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate const Pstream::commsTypes commsType ) const { +label oldWarn = UPstream::warnComm; +UPstream::warnComm = comm(); + procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_); if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) @@ -93,7 +96,7 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate reinterpret_cast(scalarReceiveBuf_.begin()), scalarReceiveBuf_.byteSize(), procInterface_.tag(), - procInterface_.comm() + comm() ); outstandingSendRequest_ = UPstream::nRequests(); @@ -104,7 +107,7 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate reinterpret_cast(scalarSendBuf_.begin()), scalarSendBuf_.byteSize(), procInterface_.tag(), - procInterface_.comm() + comm() ); } else @@ -113,6 +116,8 @@ void Foam::processorGAMGInterfaceField::initInterfaceMatrixUpdate } const_cast(*this).updatedMatrix() = false; + +UPstream::warnComm = oldWarn; } @@ -130,6 +135,9 @@ void Foam::processorGAMGInterfaceField::updateInterfaceMatrix return; } +label oldWarn = UPstream::warnComm; +UPstream::warnComm = comm(); + const labelUList& faceCells = procInterface_.faceCells(); if (commsType == Pstream::nonBlocking && !Pstream::floatTransfer) @@ -173,6 +181,8 @@ void Foam::processorGAMGInterfaceField::updateInterfaceMatrix } const_cast(*this).updatedMatrix() = true; + +UPstream::warnComm = oldWarn; } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterface.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterface.H index 69ed441404..9de5255abb 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterface.H +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterface.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -101,7 +101,8 @@ public: const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ), ( index, @@ -109,7 +110,8 @@ public: fineInterface, localRestrictAddressing, neighbourRestrictAddressing, - fineLevelIndex + fineLevelIndex, + coarseComm ) ); @@ -125,7 +127,8 @@ public: const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ); @@ -140,7 +143,8 @@ public: const lduInterface&, const labelField&, const labelField&, - const label fineLevelIndex = -1 + const label fineLevelIndex = -1, + const label coarseComm = UPstream::worldComm ) : index_(index), diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterfaceNew.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterfaceNew.C index faeaada1cc..d24d70b2a3 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterfaceNew.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/GAMGInterface/GAMGInterfaceNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,7 +37,8 @@ Foam::autoPtr Foam::GAMGInterface::New const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ) { const word coupleType(fineInterface.type()); @@ -68,7 +69,8 @@ Foam::autoPtr Foam::GAMGInterface::New fineInterface, localRestrictAddressing, neighbourRestrictAddressing, - fineLevelIndex + fineLevelIndex, + coarseComm ) ); } diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C index cab5661f8e..54ea2116c9 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,8 @@ Foam::cyclicGAMGInterface::cyclicGAMGInterface const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ) : GAMGInterface diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.H index 5a8255212c..e19ad751ad 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.H +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/cyclicGAMGInterface/cyclicGAMGInterface.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,7 +85,8 @@ public: const lduInterface& fineInterface, const labelField& restrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.C index 45db4356f9..dd47be7419 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,7 +50,8 @@ Foam::processorCyclicGAMGInterface::processorCyclicGAMGInterface const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ) : processorGAMGInterface @@ -60,7 +61,8 @@ Foam::processorCyclicGAMGInterface::processorCyclicGAMGInterface fineInterface, localRestrictAddressing, neighbourRestrictAddressing, - fineLevelIndex + fineLevelIndex, + coarseComm ) {} diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.H b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.H index e53b11cc04..839c192d58 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.H +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorCyclicGAMGInterface/processorCyclicGAMGInterface.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,7 +76,8 @@ public: const lduInterface& fineInterface, const labelField& restrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ); diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C index 45d0dc4bfc..f753853a72 100644 --- a/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C +++ b/src/OpenFOAM/matrices/lduMatrix/solvers/GAMG/interfaces/processorGAMGInterface/processorGAMGInterface.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,8 @@ Foam::processorGAMGInterface::processorGAMGInterface const lduInterface& fineInterface, const labelField& localRestrictAddressing, const labelField& neighbourRestrictAddressing, - const label fineLevelIndex + const label fineLevelIndex, + const label coarseComm ) : GAMGInterface @@ -62,7 +63,8 @@ Foam::processorGAMGInterface::processorGAMGInterface localRestrictAddressing, neighbourRestrictAddressing ), - fineProcInterface_(refCast(fineInterface)) + fineProcInterface_(refCast(fineInterface)), + comm_(coarseComm) { // From coarse face to coarse cell DynamicList