extendedCentredFaceToCellStencil.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 
29 #include "mapDistribute.H"
30 #include "faceToCellStencil.H"
31 
32 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
33 
34 Foam::extendedCentredFaceToCellStencil::extendedCentredFaceToCellStencil
35 (
36  const faceToCellStencil& 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_, facei)
63  {
64  const labelList& stencilCells = stencil_[facei];
65 
66  forAll(stencilCells, i)
67  {
68  isInStencil[stencilCells[i]] = true;
69  }
70  }
71 
72  mapPtr_().compact(isInStencil, Pstream::msgType());
73 }
74 
75 
76 // ************************************************************************* //
faceToCellStencil.H
Foam::faceToCellStencil::mesh
const polyMesh & mesh() const
Definition: faceToCellStencil.H:77
Foam::extendedCentredFaceToCellStencil::compact
void compact()
After removing elements from the stencil adapt the schedule (map).
Definition: extendedCentredFaceToCellStencil.C:58
Foam::extendedFaceToCellStencil
Note: transformations on coupled patches not supported. Problem is the positions of cells reachable t...
Definition: extendedFaceToCellStencil.H:56
extendedCentredFaceToCellStencil.H
Foam::faceToCellStencil::globalNumbering
const globalIndex & globalNumbering() const
Global numbering for faces.
Definition: faceToCellStencil.H:83
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::mapDistribute
Class containing processor-to-processor mapping information.
Definition: mapDistribute.H:163
Foam::extendedCentredFaceToCellStencil::map
const mapDistribute & map() const
Return reference to the parallel distribution map.
Definition: extendedCentredFaceToCellStencil.H:87
Foam::UPstream::msgType
static int & msgType() noexcept
Message tag of standard messages.
Definition: UPstream.H:540
Foam::faceToCellStencil
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring faces in glo...
Definition: faceToCellStencil.H:56
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