faceBox.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) 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 Class
27  Foam::processorLODs::faceBox
28 
29 Description
30  Creates the parallel distribution map by describing the source and target
31  objects using box shapes.
32 
33  A single box is created for the source object, which is then split using
34  2x2x2 refinement based on the number of remote target objects that overlap.
35  The refinement is local between communicating processor pairs, where the
36  refinement continues until a threshold number of remote target objects per
37  source box is achieved.
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef processorLODs_faceBox
42 #define processorLODs_faceBox
43 
44 #include "box.H"
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 namespace processorLODs
52 {
53 
54 /*---------------------------------------------------------------------------*\
55  Class faceBox Declaration
56 \*---------------------------------------------------------------------------*/
57 
58 class faceBox
59 :
60  public box
61 {
62 protected:
63 
64  // Protected data
65 
66  //- Reference to the source face list
67  const faceList& srcFaces_;
68 
69  //- Reference to the target face list
70  const faceList& tgtFaces_;
71 
72 
73  // Protected Member Functions
74 
75  virtual boundBox calcSrcBox(const label srcObji) const;
76  virtual boundBox calcTgtBox(const label tgtObji) const;
77 
78 
79 public:
80 
81  //- Runtime type information
82  TypeName("box");
83 
84  //- Construct from list of points
85  faceBox
86  (
87  const faceList& srcFaces,
88  const UList<point>& srcPoints,
89  const faceList& tgtFaces,
90  const UList<point>& tgtPoints,
91  const label maxObjectsPerLeaf,
92  const label nObjectsOfType,
93  const label nRefineIterMax = 100
94  );
95 
96  //- Destructor
97  virtual ~faceBox() = default;
98 
99 
100  // Member Functions
101 
102  //- Return the parallel distribution map
103  virtual autoPtr<mapDistribute> map();
104 };
105 
106 
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
108 
109 } // End namespace processorLODs
110 
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
112 
113 } // End namespace Foam
114 
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116 
117 #endif
118 
119 // ************************************************************************* //
Foam::processorLODs::faceBox::~faceBox
virtual ~faceBox()=default
Destructor.
Foam::processorLODs::faceBox::tgtFaces_
const faceList & tgtFaces_
Reference to the target face list.
Definition: faceBox.H:69
Foam::processorLODs::faceBox::calcTgtBox
virtual boundBox calcTgtBox(const label tgtObji) const
Definition: faceBox.C:51
Foam::processorLODs::faceBox::faceBox
faceBox(const faceList &srcFaces, const UList< point > &srcPoints, const faceList &tgtFaces, const UList< point > &tgtPoints, const label maxObjectsPerLeaf, const label nObjectsOfType, const label nRefineIterMax=100)
Construct from list of points.
Definition: faceBox.C:62
Foam::processorLODs::box
Creates the parallel distribution map by describing the source and target objects using box shapes.
Definition: box.H:59
Foam::processorLODs::faceBox::map
virtual autoPtr< mapDistribute > map()
Return the parallel distribution map.
Definition: faceBox.C:78
Foam::processorLODs::faceBox::calcSrcBox
virtual boundBox calcSrcBox(const label srcObji) const
Definition: faceBox.C:42
box.H
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::processorLODs::faceBox::TypeName
TypeName("box")
Runtime type information.
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::processorLODs::faceBox::srcFaces_
const faceList & srcFaces_
Reference to the source face list.
Definition: faceBox.H:66
Foam::List< face >
Foam::UList
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:103
Foam::boundBox
A bounding box defined in terms of min/max extrema points.
Definition: boundBox.H:63
Foam::processorLODs::faceBox
Creates the parallel distribution map by describing the source and target objects using box shapes.
Definition: faceBox.H:57