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-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::processorLODs::faceBox
28
29Description
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
48namespace Foam
49{
50
51namespace processorLODs
52{
53
54/*---------------------------------------------------------------------------*\
55 Class faceBox Declaration
56\*---------------------------------------------------------------------------*/
58class faceBox
59:
60 public box
61{
62protected:
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
79public:
80
81 //- Runtime type information
82 TypeName("box");
83
84 //- Construct from list of points
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// ************************************************************************* //
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: UList.H:94
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A bounding box defined in terms of min/max extrema points.
Definition: boundBox.H:64
Creates the parallel distribution map by describing the source and target objects using box shapes.
Definition: box.H:62
Creates the parallel distribution map by describing the source and target objects using box shapes.
Definition: faceBox.H:60
const faceList & srcFaces_
Reference to the source face list.
Definition: faceBox.H:66
virtual boundBox calcSrcBox(const label srcObji) const
Definition: faceBox.C:42
virtual boundBox calcTgtBox(const label tgtObji) const
Definition: faceBox.C:51
virtual ~faceBox()=default
Destructor.
TypeName("box")
Runtime type information.
virtual autoPtr< mapDistribute > map()
Return the parallel distribution map.
Definition: faceBox.C:78
const faceList & tgtFaces_
Reference to the target face list.
Definition: faceBox.H:69
Namespace for OpenFOAM.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73