cellBox.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) 2017 OpenCFD Ltd.
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 "cellBox.H"
29 #include "mapDistribute.H"
30 
31 namespace Foam
32 {
33 namespace processorLODs
34 {
35  defineTypeNameAndDebug(cellBox, 0);
36 }
37 }
38 
39 
40 // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
41 
42 Foam::boundBox Foam::processorLODs::cellBox::calcSrcBox
43 (
44  const label srcObji
45 ) const
46 {
47  boundBox bb;
48 
49  for (const label facei : srcCells_[srcObji])
50  {
51  bb.add(srcPoints_, srcFaces_[facei]);
52  }
53 
54  return bb;
55 }
56 
57 
58 Foam::boundBox Foam::processorLODs::cellBox::calcTgtBox
59 (
60  const label tgtObji
61 ) const
62 {
63  boundBox bb;
64 
65  for (const label facei : tgtCells_[tgtObji])
66  {
67  bb.add(tgtPoints_, tgtFaces_[facei]);
68  }
69 
70  return bb;
71 }
72 
73 
74 // * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
75 
77 (
78  const cellList& srcCells,
79  const faceList& srcFaces,
80  const UList<point>& srcPoints,
81  const cellList& tgtCells,
82  const faceList& tgtFaces,
83  const UList<point>& tgtPoints,
84  const label maxObjectsPerLeaf,
85  const label nObjectsOfType,
86  const label nRefineIterMax
87 )
88 :
89  faceBox
90  (
91  srcFaces,
92  srcPoints,
93  tgtFaces,
94  tgtPoints,
95  maxObjectsPerLeaf,
96  nObjectsOfType,
97  nRefineIterMax
98  ),
99  srcCells_(srcCells),
100  tgtCells_(tgtCells)
101 {}
102 
103 
105 {
106  return createMap(srcCells_.size(), tgtCells_.size());
107 }
108 
109 
110 // ************************************************************************* //
defineTypeNameAndDebug(box, 0)
virtual autoPtr< mapDistribute > map()
Return the parallel distribution map.
Definition: cellBox.C:97
A bounding box defined in terms of min/max extrema points.
Definition: boundBox.H:63
void add(const boundBox &bb)
Extend to include the second box.
Definition: boundBoxI.H:309
cellBox(const cellList &srcCells, const faceList &srcFaces, const UList< point > &srcPoints, const cellList &tgtCells, const faceList &tgtFaces, const UList< point > &tgtPoints, const label maxObjectsPerLeaf, const label nObjectsOfType, const label nRefineIterMax=100)
Construct from list of points.
Definition: cellBox.C:70
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: HashTable.H:99
const UList< point > & srcPoints_
Reference to the source points.
Definition: box.H:82
Creates the parallel distribution map by describing the source and target objects using box shapes...
Definition: faceBox.H:51
const faceList & srcFaces_
Reference to the source face list.
Definition: faceBox.H:62
Namespace for OpenFOAM.