From a01fec1863efeb393bee00bbc83124c8dfe80a14 Mon Sep 17 00:00:00 2001 From: Hrvoje Jasak Date: Fri, 20 Sep 2019 13:19:29 +0100 Subject: [PATCH] Overset AMG support. Final serial version --- .../oversetAMGInterface/oversetAMGInterface.C | 13 +++++++++++-- .../oversetAMGInterface/oversetAMGInterface.H | 3 +++ .../oversetMesh/oversetFvPatch/oversetFvPatch.C | 6 ++++++ .../oversetMesh/oversetFvPatch/oversetFvPatch.H | 3 +++ .../oversetLduInterface/oversetLduInterface.H | 4 ++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.C b/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.C index b55cddfa3..d991ff14b 100644 --- a/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.C +++ b/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.C @@ -309,9 +309,11 @@ Foam::oversetAMGInterface::oversetAMGInterface // Get mesh owner-neighbour addressing to visit cells around fringe // faces - const unallocLabelList& own = lduMesh.lowerAddr(); + const unallocLabelList& own = + fineOversetInterface_.ldu().lduAddr().lowerAddr(); - const unallocLabelList& nei = lduMesh.upperAddr(); + const unallocLabelList& nei = + fineOversetInterface_.ldu().lduAddr().upperAddr(); const labelList& fringeFaces = fineOversetInterface_.overset().fringeFaces(); @@ -798,6 +800,13 @@ Foam::label Foam::oversetAMGInterface::interfaceSize() const return interfaceSize_; } + +const Foam::lduMesh& Foam::oversetAMGInterface::ldu() const +{ + return AMGInterface::ldu(); +} + + const Foam::oversetMesh& Foam::oversetAMGInterface::overset() const { // Overset should not be accessed from coarse levels diff --git a/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.H b/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.H index 0f2475d36..864e88906 100644 --- a/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.H +++ b/src/overset/oversetMesh/oversetAMGInterface/oversetAMGInterface.H @@ -170,6 +170,9 @@ public: // Interface transfer functions + //- Return lduMesh for owner-neighbour addressing + virtual const lduMesh& ldu() const; + //- Return access to overset mesh. // Available only on the finest level virtual const oversetMesh& overset() const; diff --git a/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.C b/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.C index 8c5268f53..4afd9dcb8 100644 --- a/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.C +++ b/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.C @@ -93,6 +93,12 @@ Foam::label Foam::oversetFvPatch::interfaceSize() const } +const Foam::lduMesh& Foam::oversetFvPatch::ldu() const +{ + return boundaryMesh().mesh(); +} + + const Foam::labelList& Foam::oversetFvPatch::acceptorCells() const { return overset().acceptorCells(); diff --git a/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.H b/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.H index 46dcdcd88..c70543381 100644 --- a/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.H +++ b/src/overset/oversetMesh/oversetFvPatch/oversetFvPatch.H @@ -126,6 +126,9 @@ public: // of internal field virtual label interfaceSize() const; + //- Return lduMesh for owner-neighbour addressing + virtual const lduMesh& ldu() const; + //- Return acceptor cells virtual const labelList& acceptorCells() const; diff --git a/src/overset/oversetMesh/oversetLduInterface/oversetLduInterface.H b/src/overset/oversetMesh/oversetLduInterface/oversetLduInterface.H index e05d2b233..d32f1239a 100644 --- a/src/overset/oversetMesh/oversetLduInterface/oversetLduInterface.H +++ b/src/overset/oversetMesh/oversetLduInterface/oversetLduInterface.H @@ -47,6 +47,7 @@ namespace Foam { // Forward declaration of classes +class lduMesh; class oversetMesh; class mapDistribute; @@ -86,6 +87,9 @@ public: // due to different comms pattern virtual label interfaceSize() const = 0; + //- Return lduMesh for owner-neighbour addressing + virtual const lduMesh& ldu() const = 0; + //- Return oversetMesh for fine-level addressing virtual const oversetMesh& overset() const = 0;