Feature: Rewrite of GGI comms on AMG agglomeration

This commit is contained in:
Hrvoje Jasak 2016-08-09 13:25:14 +01:00
parent c076f28ce1
commit 3143f456cc
17 changed files with 501 additions and 279 deletions

View file

@ -950,6 +950,7 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
AMGInterface::New
(
coarseAddrPtr(),
coarseInterfaces,
fineInterface,
fineInterface.interfaceInternalField(agglomIndex_),
fineInterfaceAddr[intI]

View file

@ -292,6 +292,7 @@ void Foam::GAMGAgglomeration::agglomerateLduAddressing
AMGInterface::New
(
meshLevels_[fineLevelIndex],
coarseInterfaces,
fineInterfaces[inti],
fineInterfaces[inti].interfaceInternalField
(

View file

@ -129,12 +129,14 @@ public:
lduInterface,
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
),
(
lduMesh,
coarseInterfaces,
fineInterface,
localRestrictAddressing,
neighbourRestrictAddressing
@ -149,6 +151,7 @@ public:
static autoPtr<AMGInterface> New
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
@ -165,6 +168,11 @@ public:
{}
//- Destructor
virtual ~AMGInterface()
{}
// Member Functions
// Access

View file

@ -32,6 +32,7 @@ License
Foam::autoPtr<Foam::AMGInterface> Foam::AMGInterface::New
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
@ -46,11 +47,14 @@ Foam::autoPtr<Foam::AMGInterface> Foam::AMGInterface::New
{
FatalErrorIn
(
"AMGInterface::New"
"(const lduPrimitiveMesh& lduMesh,"
"const lduInterface& fineInterface,"
"const labelField& localRestrictAddressing,"
"const labelField& neighbourRestrictAddressing)"
"AMGInterface::New\n"
"(\n"
" const lduPrimitiveMesh& lduMesh,\n"
" const lduInterfacePtrsList& coarseInterfaces,\n"
" const lduInterface& fineInterface,\n"
" const labelField& localRestrictAddressing,\n"
" const labelField& neighbourRestrictAddressing\n"
")"
) << "Unknown AMGInterface type " << coupleType << ".\n"
<< "Valid AMGInterface types are :"
<< lduInterfaceConstructorTablePtr_->sortedToc()
@ -62,6 +66,7 @@ Foam::autoPtr<Foam::AMGInterface> Foam::AMGInterface::New
cstrIter()
(
lduMesh,
coarseInterfaces,
fineInterface,
localRestrictAddressing,
neighbourRestrictAddressing

View file

@ -45,6 +45,7 @@ namespace Foam
Foam::cyclicAMGInterface::cyclicAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -81,6 +81,7 @@ public:
cyclicAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -45,6 +45,7 @@ namespace Foam
Foam::cyclicGGIAMGInterface::cyclicGGIAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
@ -53,6 +54,7 @@ Foam::cyclicGGIAMGInterface::cyclicGGIAMGInterface
ggiAMGInterface
(
lduMesh,
coarseInterfaces,
fineInterface,
localRestrictAddressing,
neighbourRestrictAddressing

View file

@ -67,6 +67,7 @@ public:
cyclicGGIAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -68,6 +68,11 @@ class ggiAMGInterface
//- Zone addressing
labelList zoneAddressing_;
//- Processor master faces
// Per-processor insertion list of local faces into global zone
// The list is created on the master side and passed onto the slave
// to allow the slave to insert faces in the same order
labelListList procMasterFaces_;
// Parallel communication
@ -110,15 +115,15 @@ public:
ggiAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
);
// Destructor
virtual ~ggiAMGInterface();
//- Destructor
virtual ~ggiAMGInterface();
// Member Functions
@ -240,6 +245,9 @@ public:
//- Is the patch localised on a single processor
virtual bool localParallel() const;
//- Processor master face insertion list
const labelListList& procMasterFaces() const;
//- Return weights
virtual const scalarListList& weights() const;

View file

@ -51,6 +51,7 @@ namespace Foam
Foam::mixingPlaneAMGInterface::mixingPlaneAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -93,6 +93,7 @@ public:
mixingPlaneAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -45,6 +45,7 @@ namespace Foam
Foam::processorAMGInterface::processorAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -81,6 +81,7 @@ public:
processorAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -45,6 +45,7 @@ namespace Foam
Foam::regionCoupleAMGInterface::regionCoupleAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing
@ -53,6 +54,7 @@ Foam::regionCoupleAMGInterface::regionCoupleAMGInterface
ggiAMGInterface
(
lduMesh,
coarseInterfaces,
fineInterface,
localRestrictAddressing,
neighbourRestrictAddressing

View file

@ -73,6 +73,7 @@ public:
regionCoupleAMGInterface
(
const lduPrimitiveMesh& lduMesh,
const lduInterfacePtrsList& coarseInterfaces,
const lduInterface& fineInterface,
const labelField& localRestrictAddressing,
const labelField& neighbourRestrictAddressing

View file

@ -648,6 +648,7 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
AMGInterface::New
(
*coarseAddrPtr,
coarseInterfaces,
fineInterface,
fineInterface.interfaceInternalField(child_),
fineInterfaceAddr[intI]