cellToCellStencil.H
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 Class
27  Foam::cellToCellStencil
28 
29 Description
30  baseclass for extended cell centred addressing. Contains per cell a
31  list of neighbouring cells and/or boundaryfaces in global addressing.
32 
33 SourceFiles
34  cellToCellStencil.C
35 
36 \*---------------------------------------------------------------------------*/
37 
38 #ifndef cellToCellStencil_H
39 #define cellToCellStencil_H
40 
41 #include "globalIndex.H"
42 #include "boolList.H"
43 #include "HashSet.H"
44 #include "indirectPrimitivePatch.H"
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 class polyMesh;
52 
53 /*---------------------------------------------------------------------------*\
54  Class cellToCellStencil Declaration
55 \*---------------------------------------------------------------------------*/
56 
58 :
59  public labelListList
60 {
61  // Private data
62 
63  const polyMesh& mesh_;
64 
65  //- Global numbering for cells and boundary faces
66  const globalIndex globalNumbering_;
67 
68 
69 protected:
70 
71  //- Merge two lists.
72  // Guarantee global0, global1 are first.
73  static void merge
74  (
75  const label global0,
76  const label global1,
77  const labelList& listA,
78  labelList& listB
79  );
80 
81  //- Merge two lists and guarantee globalI is first.
82  static void merge
83  (
84  const label globalI,
85  const labelList& pGlobals,
86  labelList& cCells
87  );
88 
89  //- Valid boundary faces (not empty and not coupled)
90  void validBoundaryFaces(boolList& isValidBFace) const;
91 
92  //- Return patch of all coupled faces.
94 
95  //- Collect cell neighbours of faces in global numbering
96  void insertFaceCells
97  (
98  const label exclude0,
99  const label exclude1,
100  const boolList& nonEmptyFace,
101  const labelList& faceLabels,
102  labelHashSet& globals
103  ) const;
104 
105  //- Collect cell neighbours of faces in global numbering
107  (
108  const boolList& nonEmptyFace,
109  const labelList& faceLabels,
110  labelHashSet& globals
111  ) const;
112 
113 
114 public:
115 
116  // Constructors
117 
118  //- Construct from mesh
119  explicit cellToCellStencil(const polyMesh&);
120 
121 
122  // Member Functions
123 
124  const polyMesh& mesh() const
125  {
126  return mesh_;
127  }
128 
129  //- Global numbering for cells and boundary faces
130  const globalIndex& globalNumbering() const
131  {
132  return globalNumbering_;
133  }
134 
135 };
136 
137 
138 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 
140 } // End namespace Foam
141 
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
143 
144 #endif
145 
146 // ************************************************************************* //
Foam::cellToCellStencil::mesh
const polyMesh & mesh() const
Definition: cellToCellStencil.H:123
Foam::cellToCellStencil::insertFaceCells
void insertFaceCells(const label exclude0, const label exclude1, const boolList &nonEmptyFace, const labelList &faceLabels, labelHashSet &globals) const
Collect cell neighbours of faces in global numbering.
Definition: cellToCellStencil.C:233
boolList.H
Foam::cellToCellStencil::calcFaceCells
labelList calcFaceCells(const boolList &nonEmptyFace, const labelList &faceLabels, labelHashSet &globals) const
Collect cell neighbours of faces in global numbering.
Definition: cellToCellStencil.C:285
globalIndex.H
Foam::HashSet< label, Hash< label > >
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::cellToCellStencil::globalNumbering
const globalIndex & globalNumbering() const
Global numbering for cells and boundary faces.
Definition: cellToCellStencil.H:129
Foam::cellToCellStencil::cellToCellStencil
cellToCellStencil(const polyMesh &)
Construct from mesh.
Definition: cellToCellStencil.C:308
Foam::cellToCellStencil::validBoundaryFaces
void validBoundaryFaces(boolList &isValidBFace) const
Valid boundary faces (not empty and not coupled)
Definition: cellToCellStencil.C:170
indirectPrimitivePatch.H
HashSet.H
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::globalIndex
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
Definition: globalIndex.H:68
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::cellToCellStencil::allCoupledFacesPatch
autoPtr< indirectPrimitivePatch > allCoupledFacesPatch() const
Return patch of all coupled faces.
Definition: cellToCellStencil.C:191
Foam::List< labelList >
Foam::cellToCellStencil
baseclass for extended cell centred addressing. Contains per cell a list of neighbouring cells and/or...
Definition: cellToCellStencil.H:56
Foam::cellToCellStencil::merge
static void merge(const label global0, const label global1, const labelList &listA, labelList &listB)
Merge two lists.
Definition: cellToCellStencil.C:36