extendedCentredCellToCellStencil.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2013-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 \*---------------------------------------------------------------------------*/
27 
29 #include "mapDistribute.H"
30 #include "cellToCellStencil.H"
31 
32 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
33 
34 Foam::extendedCentredCellToCellStencil::extendedCentredCellToCellStencil
35 (
36  const cellToCellStencil& stencil
37 )
38 :
40  stencil_(stencil)
41 {
42  // Calculate distribute map (also renumbers elements in stencil)
43  List<Map<label>> compactMap(Pstream::nProcs());
44  mapPtr_.reset
45  (
46  new mapDistribute
47  (
48  stencil.globalNumbering(),
49  stencil_,
50  compactMap
51  )
52  );
53 }
54 
55 
56 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
57 
59 {
60  boolList isInStencil(map().constructSize(), false);
61 
62  forAll(stencil_, celli)
63  {
64  const labelList& stencilCells = stencil_[celli];
65 
66  forAll(stencilCells, i)
67  {
68  isInStencil[stencilCells[i]] = true;
69  }
70  }
71 
72  mapPtr_().compact(isInStencil, Pstream::msgType());
73 }
74 
75 
76 // ************************************************************************* //
Foam::cellToCellStencil::mesh
const polyMesh & mesh() const
Definition: cellToCellStencil.H:123
cellToCellStencil.H
Foam::extendedCellToCellStencil
Baseclass for cell-to-cell stencils.
Definition: extendedCellToCellStencil.H:54
extendedCentredCellToCellStencil.H
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::extendedCentredCellToCellStencil::compact
void compact()
After removing elements from the stencil adapt the schedule (map).
Definition: extendedCentredCellToCellStencil.C:58
Foam::cellToCellStencil::globalNumbering
const globalIndex & globalNumbering() const
Global numbering for cells and boundary faces.
Definition: cellToCellStencil.H:129
Foam::extendedCentredCellToCellStencil::map
const mapDistribute & map() const
Return reference to the parallel distribution map.
Definition: extendedCentredCellToCellStencil.H:88
Foam::mapDistribute
Class containing processor-to-processor mapping information.
Definition: mapDistribute.H:163
Foam::UPstream::msgType
static int & msgType() noexcept
Message tag of standard messages.
Definition: UPstream.H:540
mapDistribute.H
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: BitOps.H:63
Foam::cellToCellStencil
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring cells and/or...
Definition: cellToCellStencil.H:56