extendedCentredCellToFaceStencil.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) 2011-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 
28 #include "mapDistribute.H"
30 #include "cellToFaceStencil.H"
31 
32 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
33 
34 Foam::extendedCentredCellToFaceStencil::extendedCentredCellToFaceStencil
35 (
36  const cellToFaceStencil& 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  // Per face which elements of the stencil to keep.
61 
62  boolList isInStencil(map().constructSize(), false);
63 
64  forAll(stencil_, facei)
65  {
66  const labelList& stencilCells = stencil_[facei];
67 
68  forAll(stencilCells, i)
69  {
70  isInStencil[stencilCells[i]] = true;
71  }
72  }
73 
74  mapPtr_().compact(isInStencil, Pstream::msgType());
75 }
76 
77 
78 // ************************************************************************* //
Foam::cellToFaceStencil::mesh
const polyMesh & mesh() const
Definition: cellToFaceStencil.H:131
Foam::extendedCentredCellToFaceStencil::compact
void compact()
After removing elements from the stencil adapt the schedule (map).
Definition: extendedCentredCellToFaceStencil.C:58
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::extendedCentredCellToFaceStencil::map
const mapDistribute & map() const
Return reference to the parallel distribution map.
Definition: extendedCentredCellToFaceStencil.H:87
Foam::mapDistribute
Class containing processor-to-processor mapping information.
Definition: mapDistribute.H:163
Foam::cellToFaceStencil::globalNumbering
const globalIndex & globalNumbering() const
Global numbering for cells and boundary faces.
Definition: cellToFaceStencil.H:137
extendedCentredCellToFaceStencil.H
Foam::extendedCellToFaceStencil
Calculates/constains the extended cell-to-face stencil.
Definition: extendedCellToFaceStencil.H:67
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
cellToFaceStencil.H
Foam::cellToFaceStencil
Base class for extended cell-to-face stencils (face values from neighbouring cells)
Definition: cellToFaceStencil.H:56